• awk详细用法


    awk 是一个强大的文本处理工具,它以行为单位处理文本文件,并允许您执行各种操作,如搜索、替换、计算和格式化文本数据。

    一、基本语法结构

    awk 命令的基本语法结构如下:

    awk 'BEGIN { initialization } pattern { action } END { finalization }' file
    
    • BEGIN 块:用于执行初始化操作,通常在处理文本之前执行,可选。
    • pattern:是一个条件模式,用于选择要处理的行,可选。
    • action:是要对满足条件模式的行执行的操作。
    • END 块:用于执行最终的操作,通常在处理文本之后执行,可选。
    • file:要处理的文本文件的名称。

    二、常见的内置变量 

    awk 提供了许多内置变量,这些变量可用于在脚本中引用当前行的各个部分,以及其他信息。以下是一些常见的内置变量:

    • $0:当前行的完整文本。
    • $1, $2, $3, ...:当前行的第一个、第二个、第三个字段,依此类推,字段由分隔符(默认为空格)分隔。
    • NR:当前行的行号。
    • NF:当前行的字段数。
    • FS:字段分隔符(默认为空格)。
    • OFS:输出字段分隔符(默认为空格)。
    • RS:记录分隔符(默认为换行符)。
    • ORS:输出记录分隔符(默认为换行符)。

     三、常见的内置函数

    awk 还提供了一些内置函数,这些函数用于执行各种操作,如数学计算、字符串操作等。以下是一些常见的内置函数:

    • length(s):返回字符串 s 的长度。
    • substr(s, m, n):返回字符串 s 从位置 m 开始的前 n 个字符。
    • index(s, t):返回字符串 s 中子字符串 t 的第一次出现的位置。
    • split(s, a, sep):将字符串 s 按分隔符 sep 分割成数组 a
    • int(x):返回 x 的整数部分。
    • sqrt(x):返回 x 的平方根。
    • rand():返回一个 [0, 1) 范围内的随机数。
    • getline:从文件中读取下一行。

     四、示例

    1. 打印文件的每一行
    awk '{ print }' file.txt
    2. 打印文件的第一列
    awk '{ print $1 }' file.txt
    3. 打印包含特定关键词的行
    awk '/pattern/ { print }' file.txt
    4. 计算文件中数字的总和
    awk '{ sum += $1 } END { print sum }' file.txt
    5. 使用自定义分隔符处理CSV文件
    awk -F ',' '{ print $2 }' data.csv
    6. 打印文件的行数
    awk 'END { print NR }' file.txt
    7. 替换文本
    awk '{ gsub("old", "new"); print }' file.txt
    8. 使用条件进行操作
    awk '$3 > 50 { print $1, $2 }' data.txt
    9. 使用自定义变量
    awk '{ total += $1 } END { print "Total: " total }' file.txt
    10. 打印特定行范围
    awk 'NR >= 5 && NR <= 10 { print }' file.txt

    这些示例只是 awk 的一部分功能,您可以根据实际需求编写更复杂的 awk 脚本。 awk 的强大之处在于它的灵活性,可以用来处理各种文本数据处理任务。

  • 相关阅读:
    c++函数模板不能作模板参数
    day50_mybatis
    linux服务器中安装mysql时候,远程访问的时候的乱码
    JVM面试高频问题
    实战模拟│揭秘为啥年会你抽不到特等奖
    C/C++|智能指针的shared_from_this和enable_shared_from_this
    labelme标注的json数据集转换成coco数据集
    项目经理晋升为企业高管,需要杀死自己三次
    软件测试分析流程及输出项包括哪些内容?
    Oracle数据库使用PLSQL-Developer15导出导入Excel文件
  • 原文地址:https://blog.csdn.net/TreeShu321/article/details/133295633