Jim*_*Fan 2 linux grep text-processing
我有一个类似以下的列表:
Name_JR_1
1.1.1.1
Name_SR_1
2.2.2.2
Name_NONE_1
3.3.3.3
Run Code Online (Sandbox Code Playgroud)
如果要使用以下数字语法选择所有关联的名称,则可以查找模式并使用该-A1选项打印匹配的行以及after上下文或下一行,如下所示:
grep "JR" -A1 file_name
这将打印我想要的:
Name_JR_1
1.1.1.1
Run Code Online (Sandbox Code Playgroud)
但是,我需要一种解决方案,可以删除所有与搜索模式匹配的条目。但是,使用-v带有此语法的选项不会给我想要的结果:
grep -v "JR" -A1 file_name
Run Code Online (Sandbox Code Playgroud)
我希望此命令后的输出如下所示:
Names_SR_1
2.2.2.2
Name_NONE_1
3.3.3.3.
Run Code Online (Sandbox Code Playgroud)
尝试:
$ awk '/JR/{getline;next} 1' file
Name_SR_1
2.2.2.2
Name_NONE_1
3.3.3.3
Run Code Online (Sandbox Code Playgroud)
/JR/{getline;next}
选择包含的行JR。对于这些行,这会指示awk获取下一行(getline),然后跳过其余命令,并从下一行()重新开始next。
1
对于其中没有的任何行JR,将打印该行。