我有一个如下列表:
Name_JR_1
1.1.1.1
Name_SR_1
2.2.2.2
Name_NONE_1
3.3.3.3
如果要使用以下数字语法选择所有关联的名称,则可以查找一种模式,并使用
-A1
选项打印匹配的行以及after上下文或下一行,如下所示:grep "JR" -A1 file_name
这将打印我想要的:
Name_JR_1
1.1.1.1
但是,我需要一种解决方案,可以删除所有与搜索模式匹配的条目。但是,使用带有这种语法的
-v
选项不会给我想要的结果:grep -v "JR" -A1 file_name
我希望此命令后的输出如下所示:
Names_SR_1
2.2.2.2
Name_NONE_1
3.3.3.3.
最佳答案
尝试:
$ awk '/JR/{getline;next} 1' file
Name_SR_1
2.2.2.2
Name_NONE_1
3.3.3.3
这个怎么运作
/JR/{getline;next}
这将选择包含
JR
的行。对于这些行,这会指示awk获取下一行(getline
),然后跳过其余命令,并从下一行(next
)重新开始。 1
对于其中没有
JR
的任何行,这将打印该行。 关于linux - 使用-v选项以grep -A反转多行grep结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47877125/