在文件中找到特定的图案后,我需要打印第六行。在第6行中,我只想打印第5列。我可以使用以下命令来解决此问题的第一部分,
awk 'c&&!--c;/pattern/{c=6}' file
,但是我找不到修改它的方法来仅打印此第6行的第5列。任何帮助将不胜感激。
答案 0 :(得分:1)
您可以为此使用内置的NR
变量
awk '/pattern/ { nrs[NR + 6] = 1; } NR in nrs { print $5; delete nrs[NR] }'
这将测试pattern
,并在其行号加六个(NR + 6
)的数组中进行输入。然后,我们对该数组进行简单查找,以查看当前行号是否是我们要打印的行号(nrs[NR] == 1
),然后打印第5列(print $5
),然后清理该数组。
此解决方案说明了一个模式可能在给定的6行范围内多次出现的事实。
答案 1 :(得分:0)
如果您不了解所使用的脚本,请认真考虑并提出问题,这一点很重要。
awk 'c&&!--c;/pattern/{c=6}' file
只是使用默认行为作为速记
awk 'c&&!--c{print $0} /pattern/{c=6}' file
您可以对其进行微调:
awk 'c&&!--c{print $5} /pattern/{c=6}' file