我想要打印mp_demand> 1中的所有行 。 我正在使用awk,但不知何故无法实现。
root@1.2.3.4:#cat a.txt
Target MR 11604 MPG: -1 Region: -1
reading assignments message /a/tmp/a.txt
mpg=1 mrule=11604 reg=33000 score=10625 rank=0 perc=100 mp_demand=1
mpg=2 mrule=11604 reg=33000 score=10625 rank=0 perc=100 mp_demand=1
mpg=3 mrule=11604 reg=33000 score=10625 rank=0 perc=100 mp_demand=1
mpg=4 mrule=11604 reg=33000 score=10625 rank=0 perc=100 mp_demand=1
mpg=5 mrule=11604 reg=33000 score=10625 rank=0 perc=100 mp_demand=1
mpg=6 mrule=11604 reg=33000 score=10625 rank=0 perc=100 mp_demand=34
我正在尝试的是
root@1.2.3.4:# cat a.txt | awk 'BEGIN {p=0} $7 >= 0 {p ++} END {print p}' | head
45877
但是,我想要的预期输出是
mpg=6 mrule=11604 reg=33000 score=10625 rank=0 perc=100 mp_demand=34
其他/更好的方法吗?
答案 0 :(得分:3)
$ awk -F'=' 'NR>2 && $NF>1' a.txt
mpg=6 mrule=11604 reg=33000 score=10625 rank=0 perc=100 mp_demand=34
答案 1 :(得分:2)
使用Perl(已标记),使用> 1
标准作为所需输出表示
perl -wnE'/mp_demand=([0-9]+)/ && $1 > 1 && print' a.txt
或者没有名称,/=([0-9]+)$/
,如果它始终位于行中(或者您想要最后一个号码)
注意:cat
通常不需要将文件传输到命令中;当您在命令后提供其名称时,大多数工具可以逐行将文件提供到STDIN
中(可能使用<
)