【发布时间】:2018-10-01 17:20:11
【问题描述】:
我有一个看起来像这样的文件:
column1 column2 column3 column4 column5 column6 Warn=3000
column1 column2 column3 column4 column5 Warn=200
column1 column2 column3 column4 column5 column6 column7 Warn=40000
column1 column2 column3 column4 Warn=100
column1 column2 column3 column4 column5 Warn=20000
column1 column2 column3 column4 Warn=15000
可以看出,每一行的字段数量都在变化,但最后一个字段总是“Warn=”后跟一个数字。 我基本上想打印“Warn =”字符串后面跟着一个大于10000的数字的所有行,并将它们从最高数字排序到最低数字。
所以结果应该是这样的:
column1 column2 column3 column4 column5 column6 column7 Warn=40000
column1 column2 column3 column4 column5 Warn=20000
column1 column2 column3 column4 column5 Warn=15000
到目前为止,通过使用 grep、awk 和 sort,我已经能够在一定程度上实现我想要的:
grep -E 'Warn=[0-9]{5}' file.txt | awk '{ print $NF, $0 }' | sort -rn -k1 | sed 's/Warn=[0-9]* //'
有没有更简单的方法来使用 awk?
【问题讨论】: