awk指定分隔符_Linux文本三剑客 -- awk命令

本文介绍了awk命令在Linux中处理文本的用法,特别是如何指定分隔符来解析文件,如处理/etc/passwd。通过示例展示了如何匹配正则表达式、进行比较运算并执行相应动作,例如打印特定段落。还涵盖了awk的内置变量如$0、NR和NF,以及在数据处理中的应用。
摘要由CSDN通过智能技术生成

7dcd9c75eb389c8e966b87a361a73548.png

awk主要用于处理有格式的文本,例如/etc/passwd这种

用法

  • awk 选项 'pattern{action}' 文件路径

选项

  • -F指定分隔符 -- 如(-F:)

工作流程

  • awk -F: '{print $1,$3}' /etc/passwd
    • awk会读取文件的一行内容然后赋值给$0
    • 然后awk会以-F指定的分隔符将该行切分成n段,最多可以达到100段,第一段给$1,第二段给$2,依次次类推
    • print输出该行的第一段和第三段,逗号代表输出分隔符,默认与-F保持一致
    • 重复步骤1,2,3直到文件内容读完

内置变量

  • $0 -- 一整行内容
  • NR -- 记录号,等同于行号
  • NF -- 以-F分隔符分隔的段数

pattern可以是

  • /正则/ # 该行内容匹配成功正则
  • $1 ~ /正则/ # 第一段内容匹配成功正则
  • $1 !~ /正则/ # 第一段内容没有匹配成功正则
  • 比较运算
    • NR >= 3 && NR <=5 # 3到5行
    • $1 == "root" # 第一段内容等于root

action可以是

  • print $1,$3

数据

[root@wotdd home]# cat 2
root:x:0:0:root:/root:/bin/bash
  1  2 3 4  5     6      7       以 : 可分成7段
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
EOF
  • 正则匹配
    • awk -F: '/^root/{print $1,$3} 2 -- 以 : 分隔,匹配以root开头,打印1和3段
    • awk -F: '$1 ~ /^d/{print $1,$3}' 2 -- 以d开头,匹配第一段,打印1和3段
    • awk -F: '$1 !~ /^d/{print $1,$3}' 2 -- 不是以d开头的,打印1和3段

44f4878192255358127c7e0b4200e9e2.png
  • 比较运算
    • awk -F: 'NR>3{print $1}' 2 -- NR 行号 大于3 行以上的
    • awk -F: '$1 == "lp"{print $0}' 2 -- 运算 ,第一段 等于 指定字符 , $0 打印全部
    • cat 2 | awk -F: '{print $1}' -- awk支持管道操作

ff42be6e5bf2a4d99b27d746101d2993.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值