如何在文件中限制区域?逐行说$ 2 == end吗?
输入文件
jfk
kdlg
ldlg
ghf
c end
45 56 56 88
45 55 66 44
44 88 55 10
我想在第c end
行下的第$ 1和$ 2列中打印数字。
预期产量
45 56
45 55
44 88
谢谢
答案 0 :(得分:1)
请您尝试以下。
awk 'BEGIN{flag=""} /end/{flag=1;next} !/end/ && /[a-zA-Z]+/{flag=""} flag{print $2}' Input_file
答案 1 :(得分:1)
awk
awk ' /end/ || x==1 { if(x==1) print $1,$2 ; x=1 } '
带有输入
$ cat elisabeth.txt
jfk
kdlg
ldlg
ghf
c end
45 56 56 88
45 55 66 44
44 88 55 10
$ awk ' /end/ || x==1 { if(x==1) print $1,$2 ; x=1 } ' elisabeth.txt
45 56
45 55
44 88
$
比karakfa建议的短得多
awk ' /end/ || x { if(x) print $1,$2 ; x=1 } ' elisabeth.txt
答案 2 :(得分:1)
您需要的是:
$ awk 'f{print $1, $2} $2=="end"{f=1}' file
45 56
45 55
44 88
这是一个非常常见的awk习惯用法,不确定为什么这不是您得到的第一个答案!