awk 确实强大, 请参考这篇文章 here
摘要
wk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。
awk 命令格式和选项
awk [options] ‘script’ var=value file(s)
awk [options] -f scriptfile var=value file(s)
options:
-F fs 指定输入分隔符,fs可以是字符串或者正则表达式
-v var=value 将外部变量赋给awk
-f 从脚本读取awk命令
模式和操作
awk脚本由模式和操作组成
awk指定输出列
awk '{print $0}' file #打印所有列
awk '{print $1}' file #打印第一列
awk '{print $1, $3}' file #打印第一和第三列
cat file | awk '{print $3, $1}' #打印第三列和第一列,注意先后顺序。
cat file | awk '{print $3, $NF}' #打印第三列和最后一列
awk -F ":" '{print $1, $3}' #以“:”为分隔符分割列,然后打印第一列和第三列
$0表示所有列
-F:指定分隔符
$(NF)表示最后一列,$(NF-1)表示倒数第二列,以此类推。
如果我想打印N列之后的所有列,该怎么办?
解决方法是,把前N列都赋值为空,然后打印所有列。
awk '{for(i=1;i<=N;i++){$i=""}; print $0}' file
逐行匹配文本
https://opengers.github.io/linux/awk-format-print/