限制区域awk文件

时间:2019-02-04 15:27:18

标签: awk

如何在文件中限制区域?逐行说$ 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

谢谢

3 个答案:

答案 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习惯用法,不确定为什么这不是您得到的第一个答案!