微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何删除sed的双行换行符?

我试过了:

sed -i 's/n+/n/' file

但它不工作。

我仍然想要单行换行。

input:

Bash – replace斜线

如何在文件中search正则expression式,然后修改所有的事件?

在OS X上replacechmod –reference?

在不同用户的情况下在另一个shell脚本中运行一个shell脚本

使用通配符排除具有特定后缀的文件

abc def ghi jkl

期望的输出

abc def ghi jkl

运行cmake时可能缺less库

如何用tr来代替' – 'string

如何比较两个目录的大小?

用参数调用函数的Bash脚本'if'语句

将stdout作为命令行util的文件名?

perl -00 -pe 1 filename

将输入文件分割成由两个或多个换行符分隔的“段落”,然后打印由单个空白行分隔的段落:

perl -00 -pe 1 <<END abc def ghi jkl END

abc def ghi jkl

使用awk(gnu或BSD)你可以这样做:

awk -v RS= -v ORS='nn' '1' file abc def ghi jkl

还使用perl :

perl -pe '$/=""; s/(n)+/$1$1/' file abc def ghi jkl

Sed不是很擅长以编程的方式检查多行的任务。 这是我能得到的最接近的:

$ sed '/^$/{n;/^$/d}' file abc def ghi jkl

这个逻辑:如果你找到一个空行,看看下一行。 如果下一行也是空白的,删除下一​​行。

这不会吞噬所有的线路,因为它假设有一个有意的额外的配对,并把两个nn降到两个n s。

要在基本awk做到这一点:

$ awk 'NF > 0 {blank=0} NF == 0 {blank++} blank < 2' file abc def ghi jkl

这使用了一个称为空白的变量,当字段数( NF )为非零时为零,当它为零时(一条空白行)增量。 当连续的空行数小于2时,Awk的认行为是打印。

这给你什么你想单独使用sed:

sed '/^$/d' txt | sed -e $'s/$/\n/'

一个sed命令删除所有空行,表示为“^ $”。

第二个sed命令在每行的末尾插入一个换行符。

这可能适用于你(GNU sed):

sed '/^$/{:a;N;s/n$//;ta}' file

这将用一个空白行替换多个空白行。

但是,如果您想在每个非空行之后放置一个空行,则:

sed '/^$/d;G' file

其中删除所有空白行,只附加一个空白行到非空行。

为什么不摆脱所有的空白行,然后在每行之后添加一个空行? 对于您指定的输入文件tmp ,

sed '/^$/d' tmp|sed '0~1 a ' abc def ghi jkl

如果空格(空格和制表符)被视为“空白”行,则使用sed '/^s*$/d' tmp|sed '0~1 a ' 。

请注意,这些解决方案确实在最后留下了空行,因为我不确定是否需要这样做。 轻松删除

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐