给定一个包含多行目标的输入文件
...
100 100 100 100
Expression: out1
200 200 200 200
300 300 300 300
Expression: out2
400 400 400 400
500 500 500 500
Expression: out3
...
如果我这样做
awk '/Expression:/ {printf " %f ",$2 } ' $file
我得到多个输出
out1 out2 out3
如何根据文件中的位置选择其中一个输出,例如out3
?
答案 0 :(得分:1)
For - 如果为正则表达式找到n行匹配,那么如何选择最后一行?
awk '/Expression:/ { last_found = $2 }END{print last_found }' file
显示给定正则表达式的第n个匹配
awk '/Expression:/ { if(++i==3){ print $2; exit } }' file
<强>输入强>
akshay@db-3325:~$ cat f
...
100 100 100 100
Expression: out1
200 200 200 200
300 300 300 300
Expression: out2
400 400 400 400
500 500 500 500
Expression: out3
...
<强>输出强>
# for 3rd one
akshay@db-3325:~$ awk '/Expression:/ { if(++i==3){ print $2; exit } }' f
out3
# For 2nd one
akshay@db-3325:~$ awk '/Expression:/ { if(++i==2){ print $2; exit } }' f
out2
# For last one
akshay@db-3325:~$ awk '/Expression:/ { last_found = $2 }END{print last_found }' f
out3
答案 1 :(得分:1)
只需计算出现次数并在计数器达到阈值后打印最后一个值:
awk '/Expression/{c+=1;s=$2};c==3{print s}'
答案 2 :(得分:0)
尝试:
awk '/Expression/{print $NF}' Input_file
OR
awk '/Expression/{print $2}' Input_file