awk 仅限于一行操作?

awk 仅限于一行操作?

就像主题一样。假设我有一个文件,其中包含:

*aaa 美国广播公司

防御 55

*CCC ABC

瑞特 33

我想知道是否可以做出这样的声明:如果 $1=="*aaa",则从下一行打印 $4。我知道解决方案之一可能是将文件转换为以下输出:

*aaa ABCDEF 55

*ccc ABCRET 33

使用“*”作为行分隔符,但我想避免这种情况。

问候,卢卡斯

答案1

使用一个变量(primed在示例中称为),如果找到匹配项,则设置该变量。next如果设置了 primed,则该语句读取下一行,然后打印该行。

awk '{
if (primed) print $4; 
if ($1 == "*aaa") { primed=1; next } primed=0; }' file

相关内容