shell脚本以删除空行旁边的一行



我能够使用grepsed从文件中删除空行。但是,我无法解析一个场景,必须在空排旁边删除有效的线路。以下是一个示例:

来源:

1_1
1_2
1_3
1
2_1
2_2
2_3
2_4
2_5
2
3
4_1
4_2
4
5_1
5_2
5_3
5_4
5

6
7_1
7
8_1
8_2
8

输出:

1_1
1_2
1_3
1
2_1
2_2
2_3
2_4
2_5
2
4_1
4_2
4
5_1
5_2
5_3
5_4
5
7_1
7
8_1
8_2
8

如何删除空行旁边的有效行?

尝试类似:

sed '/^$/,+1 d' test.txt

每当您找到空线时,删除它并下一个即时行。

这是awk解决方案:

awk '!NF {f=1;next} f {f=0;next}1' file
1_1
1_2
1_3
1
2_1
2_2
2_3
2_4
2_5
2
4_1
4_2
4
5_1
5_2
5_3
5_4
5
7_1
7
8_1
8_2
8

!NF {f=1;next}如果行为空白,请设置f=1并跳过行。
然后,如果行不是空白,请测试f是否为True。
{f=0;next}如果是真的,请设置f=0并跳过线。
1打印剩余的线。


和ED

完成的一些gofling
awk 'NF&&!f;{f=!NF}' file
sed '/^$/ {
:a
   N
   /n$/ ba
   d
   }' YourFile
  • POSIX版本
  • 删除所有连续的空线,下一个(非空)一个

相关内容

  • 没有找到相关文章

最新更新