当我从文件中读取时,我想 grep 该文件中“x”的每个实例(第 1 行),以及下一行(第 2 行)和之后的行(第 3 行)...但是然后我想要第 6、7、10 和 11 行。有什么办法可以做到这一点吗?
答案1
该答案假设输入文件是常规文本。或者,如果输入文件实际上是 XML 或 JSON 或类似文件,则应使用特定于该格式的工具。
尝试:
awk 'BEGIN{a[0];a[1];a[2];a[3];a[6];a[7];a[10];a[11]} /x/{n=NR} n && (NR-n) in a'
怎么运行的:
BEGIN{a[0];a[1];a[2];a[3];a[6];a[7];a[10];a[11]}
a
这会为我们要打印的每一行初始化关联数组。/x/{n=NR}
如果
x
出现在该行,则将变量设置n
为当前行号。请注意,它x
被视为正则表达式。n && (NR-n) in a
如果
n
已分配并且NR-n
是我们要打印的行之一,则打印该行。