mac 文本处理命令分享

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。 或者参考博客:

  1. http://www.zsythink.net/archives/tag/awk/
  2. https://www.tutorialspoint.com/awk/awk_quick_guide.htm

Original: https://www.cnblogs.com/csophys/p/7476394.html
Author: csophys
Title: mac 文本处理命令分享

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/713843/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球