2 awk
awk '{pattern + action}' {filenames}
awk是在每行处理文本的时候,默认按照空格隔离每一个域,对每一个域做处理。也可以直接通过在awk 后加 -F. 指定分隔符。
ls -l | awk '/rw/{print "第三列:"$3"\t|\t""第5列:"$5}'
第三列:csophys | 第5列:3154
第三列:csophys | 第5列:42
第三列:csophys | 第5列:5253
第三列:csophys | 第5列:32
第三列:csophys | 第5列:35
ls -l | awk 'BEGIN{OFS="&";count=10;for(i=0;i
开始
开始
开始
11&2&csophys&23
12&3&csophys&3675
13&4&csophys&42
14&5&csophys&5253
15&6&csophys&32
16&7&csophys&35
结束
awk中可以使用printf来格式化输出,也可以使用if判断语句
ls -l | awk 'BEGIN{OFS="&";count=10;for(i=0;i3) printf("printf:%s,%s,%s,%s\n",++count,NR,$3,$5)}END{print "结束"}'
)print"开始"}/rw/{if(NR>3) printf("printf:%s,%s,%s,%s\n",++count,NR,$3,$5)}END{print "结束"}'
开始
开始
开始
printf:11,4,csophys,42
printf:12,5,csophys,5253
printf:13,6,csophys,32
printf:14,7,csophys,35
结束
awk 内部变量名的含义如下:
变量名 含义
ARGC 命令行变元个数
ARGV 命令行变元数组
FILENAME 当前输入文件名
FNR 当前文件中的记录号
FS 输入域分隔符,默认为一个空格
RS 输入记录分隔符
NF 当前记录里域个数
NR 到目前为止记录数
OFS 输出域分隔符
ORS 输出记录分隔符
更加强大的功能参考 man awk。 或者参考博客:
Original: https://www.cnblogs.com/csophys/p/7476394.html
Author: csophys
Title: mac 文本处理命令分享
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/713843/
转载文章受原作者版权保护。转载请注明原作者出处!