awk基础

awk: 行处理器

awk '/pattern/{command}' file1 file2 ..

print(输出 打印)
printf(格式化输出)
%c : 字符
%s : 字符串
%d : 整数
%f : float 浮点型 小数
%10s : 右对齐 10位宽度字符串
%-10s : 左对齐

Record : 记录 / 每一行
Field : 域

NR : record number : 行号
NF : field nunber : 字段的号 列号
FS : field separator : 分隔符
默认的分隔符是空格 " "
~ 匹配,与==相比不是精确比较
!~ 不匹配,不精确比较
== 等于,必须全部相等,精确比较
!= 不等于,精确比较
&&  逻辑与
|| 逻辑或

  • 匹配时表示1个或1个以上
    /[0-9][0-9]+/ 两个或两个以上数字
    /[0-9][0-9]*/ 一个或一个以上数字
    FILENAME 文件名
    OFS 输出字段分隔符, 默认也是空格,可以改为制表符等
    ORS 输出的记录分隔符,默认为换行符,即处理结果也是一行一行输出到屏幕
    -F'[:#/]' 定义三个分隔符

-F : 指定分隔符
awk -F: '{print $0}' /etc/passwd
//指定分隔符为:,打印整行
awk '{print $0}' awk.txt
//打印整行
awk '{print $1,$3}' awk.txt
//打印第一个字段和第三个字段
awk '{print $NF}' awk.txt
//打印最后一个字段
awk '{print NR,$0}' awk.txt
//打印行号及整行内容
this is a text
$1 $2 $3 $4 $0: 整行

awk -F: '{printf "%-20s%-5d\n",$1,$3}' /etc/passwd
//指定分隔符为:,格式化输出第一,三字段(第一字段为左对齐20个字符串的宽度,第三个字段为左对齐的5个宽度的整数)
awk '{print FNR,$0}' awk.txt awk2.txt
//以文件内容为界限,打印行号及整行内容
awk 'BEGIN{FS=":"}{print "Username: ",$1 }END{print "++++++++++++++++++++++++++++"}' /etc/passwd
//标准格式
awk 'BEGIN{X=0}/^$/{X+=1}END{print "I find",X,"blank lines."}' awk2.txt
//BEGIN预处理定义变量X值为0,每有一个/^$/(空白行),X值加1
awk 'NR==2,NR==6{print NR,$0}' awk2.txt
//打印2到6行的行号及整行内容
awk 'NF==4 {print $0}' awk2.txt
//找出整行内容有且仅有4个字段的行,打印输出
awk '{if(NF==4)print $0}' awk2.txt
//同上

awk -F: '$1~/nginx|root/' /etc/passwd
//打印第一字段是nginx和root的行

awk -F: '/gdm/,/tcpdump/{print NR,$1,$3}' /etc/passwd
//以:为分隔符,打印从gdm到tcpdump行的行号,第一字段和第三字段

转载于:https://blog.51cto.com/14239091/2389391

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值