C04S08-Shell编程之awk工具

一、awk工具

1. awk概述

awk是一个系统自带的、具有强大功能的处理工具,提供编程语言的功能,比如自定义变量、数学运算、字符串处理等,常见的用法是对文本文件进行按行取列。

2. awk命令 – 对文本和数据进行处理

awk命令的功能是对文本和数据进行处理,可以自定义函数或使用正则表达式,匹配指定的文本内容来操作。

awk 选项 '[模式或条件] {操作符}' 文件

常见的选项:

选项功能
-F设置字段分隔符
-v给变量赋值

常见的操作符:

操作符功能
print打印输出
printf格式化打印输出

awk工具还有着内置变量:

内置变量功能
$0表示整行
$n表示第n列
NR表示行号
NF表示行的字段个数
FS表示列分隔符

二、awk常见操作

  1. 打印文件全部内容。

    awk '{print}' test.txt
    # 或者
    awk '{print $0}' test.txt
    
  2. 打印文件行号和内容。

    awk '{print NR,$0}' test.txt
    
  3. 打印第1行到第3行内容。

    awk 'NR==1,NR==3 {print}' test.txt
    # 或者
    awk 'NR==1 && NR==3 {print}' test.txt
    
  4. 打印第1行和第3行内容。

    awk 'NR==1;NR==3 {print}' test.txt
    # 或者
    awk 'NR==1 || NR==3 {print}' test.txt
    
  5. 打印奇数行或者偶数行内容。

    awk 'NR%2==1 {print}' test.txt # 奇数行
    awk 'NR%2==2 {print}' test.txt # 偶数行
    
  6. 使用BEGIN模式和END模式计算1~10的总和。

    awk 'BEGIN{sum=0};{sum=sum+$1};END{print sum}' test.txt
    
    • BEGIN模式是作用在操作符开始之前,一些初始化操作,比如设置行和列的分隔符、初始化自定义变量等可以写在在BEGIND模式中,语法上也是BEGIN模式在最前面。
    • END模式和BEGIN模式相反,作用于程序即将结束退出的时候,通常是打印输出设置在END模式当中,这样awk就只会输出最后的结果,语法上是放在最后面的。
    • BEGIN模式和END模式和awk要执行的具体操作是写在中间部分,包括写条件语句等。
  7. 打印第3行的第3列.

    awk -F : 'NR==3 {print $3}' test.txt
    
    • -F用于设置列分隔符,awk默认的列分隔符是空格。
  8. 结合三元运算符打印输出UID和GID相同的/etc/passwd文本内容。

    # 三元运算符格式:条件?条件为真的结果:条件为假的结果
    awk -F: '{res=($3==$4)?$3:$4;{print res}}' /etc/passwd
    
  9. 字符串的模糊匹配和精确匹配。

    $n~"字符串" #第n列包含字符串
    $n!~"字符串" #第n列不包含字符串
    $n=="字符串" #第n列是字符串
    $n!="字符串" #第n列不是字符串
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值