查找以零结尾的行并打印其姐妹行

Gen*_*ser 1 perl awk sed

我有以下行的文件:

Data;moreData;EvenMoreData1;200
Data;moreData;EvenMoreData1;200

Data;moreData;EvenMoreData2;500
Data;moreData;EvenMoreData2;0

Data;moreData;EvenMoreData3;0
Data;moreData;EvenMoreData3;0
Run Code Online (Sandbox Code Playgroud)

基本上每2条线彼此相关.我试图找到最好的方法,只用一个0和它上面或下面的线打印线.所以输出就像.

Data;moreData;EvenMoreData2;500
Data;moreData;EvenMoreData2;0

Data;moreData;EvenMoreData3;0
Data;moreData;EvenMoreData3;0
Run Code Online (Sandbox Code Playgroud)

Adr*_*rth 7

$ perl -00 -ne "print if /;0$/m;" < input
0;Data;0;moreData;EvenMoreData2;500
0;Data;0;moreData;EvenMoreData2;0

0;Data;0;moreData;EvenMoreData3;0
0;Data;0;moreData;EvenMoreData3;0

0;Data;0;moreData;EvenMoreData3;0
0;Data;0;moreData;EvenMoreData3;1
Run Code Online (Sandbox Code Playgroud)

-00打开将输入记录分隔符设置为的段落模式\n\n+,因此这依赖于两条数据行之间的空行.

$ cat input
0;Data;0;moreData;EvenMoreData1;200
0;Data;0;moreData;EvenMoreData1;200

0;Data;0;moreData;EvenMoreData2;500
0;Data;0;moreData;EvenMoreData2;0

0;Data;0;moreData;EvenMoreData3;0
0;Data;0;moreData;EvenMoreData3;0

0;Data;0;moreData;EvenMoreData3;0
0;Data;0;moreData;EvenMoreData3;1
Run Code Online (Sandbox Code Playgroud)

  • 我喜欢上面提到的@ sudo_O关于"搜索无限因素"的评论:) - 但是对这个答案进行投票**没有解释**什么是坏的并不是很有帮助.( (2认同)