• Shell脚本之awk的用法


    Shell脚本之awk的用法

    所有参数

    基本格式:awk ‘pattern { action }’ file

    -f program:使用程序文件program中的AWK脚本来处理输入数据。
    -F fs:设置输入字段分隔符为fs。默认情况下,AWK使用空格或制表符作为字段分隔符。
    -v var=val:在处理输入数据之前,将变量var设置为val。
    -f program:使用程序文件program中的AWK脚本来处理输入数据。
    -F fs:设置输入字段分隔符为fs。默认情况下,AWK使用空格或制表符作为字段分隔符。
    -v var=val:在处理输入数据之前,将变量var设置为val。
    -m:对输入数据进行多字符字段处理。
    -W compat:使AWK与旧版本的AWK兼容。
    -W copyright:输出AWK的版权信息。
    -W help:输出AWK的帮助信息。
    -W lint:对AWK脚本进行语法检查。
    -W lint-old:对旧版本的AWK脚本进行语法检查。
    -W posix:使AWK符合POSIX标准。
    -W version:输出AWK的版本信息。

    常见用法

    1)打印文件的所有行:如果你不使用任何模式,awk 会默认打印文件的每一行。例如,awk ‘{print}’ filename 会打印 file 的所有行。

    2)打印文件中的特定列:如果你希望打印文件中的特定列,你可以使用 $ 符号加上列的数字索引。例如,awk ‘{print $1}’ filename 会打印 file 的第一列。

    3)使用自定义的分隔符:默认情况下,awk 使用空格或制表符作为字段分隔符。如果你希望使用自定义的分隔符,你可以使用 -F 参数。例如,awk -F, ‘{print $1}’ file 会以逗号为分隔符,打印 file 的第一列。

    4)使用模式匹配:你可以使用 awk 进行模式匹配。例如,awk ‘/pattern/ {print}’ file 会打印 file 中包含 pattern 的所有行。

    5)带有逻辑运算符的模式匹配:你可以使用逻辑运算符(如 &&,||)来组合多个模式。例如,awk ‘/pattern1/ && /pattern2/ {print}’ file 会打印 file 中同时包含 pattern1 和 pattern2 的所有行。

    6)计算和打印行数:你可以使用 NR(表示当前行号)和 FNR(表示当前文件中的行号)来计算和打印行数。例如,awk ‘{print NR, $0}’ file 会打印 file 的每一行,并在每行前打印行号。

    7)使用条件语句:你可以在 awk 中使用条件语句。例如,awk ‘{if ($1 > 10) print $1}’ file 会打印 file 中第一列大于10的所有行。

    8)自定义输出:你可以使用 printf 函数进行自定义输出。例如,awk ‘{printf “Column 1: %s, Column 2: %s\n”, $1, $2}’ file 会以特定的格式打印 file 的前两列。

    9)使用内置变量:除了 $1, $2, NR, FNR 等内置变量外,awk 还提供了其他一些内置变量,如 NF(表示当前行的字段数)。例如,awk ‘{print NF}’ file 会打印 file 每一行的字段数。

    10)使用用户定义的变量:你可以在 awk 中定义自己的变量。例如,awk ‘{total += $1} END {print total}’ file 会计算 file 第一列的总和,并在文件结束时打印出来。

    11)调用系统命令:你可以在 awk 中调用系统命令。例如,awk ‘{print | “sort”}’ file 会将每一行打印到标准输出,并通过管道将结果传递给 sort 命令。

    12)打印文件中的特定行。例如,打印第一行 awk ‘NR==1 {print}’ filename

    13)使用条件打印行。例如,打印第一列大于10的行 awk ‘$1>10 {print}’ filename

    14)在多个文件中处理数据。例如,合并两个文件 awk ‘{print}’ file1 file2

    15)通过管道将 awk 与其他命令结合使用。例如,从 ls 命令输出中提取文件名 ls -l | awk ‘{print $9}’

    16)在 Shell 脚本中将 awk 输出赋值给变量 var=$(awk ‘{print $1}’ filename)

  • 相关阅读:
    微软云计算[1]之云计算平台、云操作系统Windows Azure
    CSS入门
    配置tomcat可用的代理访问ArcGIS Enterprise/GeoScene Enterprise加密服务
    Servlet开发-通过代码案例熟悉HttpServletRequest类
    2024最新AI创作系统,ChatGPT商业运营系统,AI绘画系统源码,AI视频生成系统,AI智能体、文档分析、多模态模型一站式AIGC解决方案
    【牛客-剑指offer-数据结构篇】JZ25 合并两个排序的链表 三种思路 Java实现
    ADC采集到的数值和电压值、频率有什么联系?
    Java养老护理助浴陪诊小程序APP源码
    大创项目推荐 深度学习的口罩佩戴检测 - opencv 卷积神经网络 机器视觉 深度学习
    C++之this指针
  • 原文地址:https://blog.csdn.net/techenliu/article/details/133144633