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

如果下一行以单词字符开头,则用空格替换新行

如何解决如果下一行以单词字符开头,则用空格替换新行

我有一个看起来像的大文本文件

some random : demo text for
illustration,can be long

and : some more

here is : another
one

我想要一个类似的输出

some random : demo text for illustration,can be long
and : some more
here is : another one

我尝试了一些奇怪的、明显有问题的正则表达式,比如 %s/\w*\n/ /g,但我真的无法理解。

解决方法

对于您显示的示例,请尝试遵循 awk 代码。使用 RS(记录分隔符),将其设置为无效。这仅基于您展示的示例。

awk -v RS="" '{$1=$1} 1' Input_file
,

添加另一个解决方案,以防有人使用 printf 寻找 awk 函数。尽管应该使用 Here 中提供的第一个解决方案,恕我直言,但也可以在此处添加这些解决方案。

第二个解决方案: 添加解决方案以检查行是否以字母开头,然后仅将它们添加到前几行左右。

awk '{printf("%s%s",$0~/^[a-zA-Z]/?(FNR>1 && prev~/^[a-zA-Z]/?OFS:""):ORS,$0);prev=$0} END{print ""}' Input_file

第三种解决方案: 注意:只有当您的行中按照所示示例显示冒号时,这才有效。

awk '{printf("%s%s",$0~/:/?(FNR>1?ORS:""):OFS,$0)} END{print ""}'  Input_file

说明: 使用 printfawk 函数。然后使用条件,如果当前行有 : 并且大于 1,则打印 ORS,否则不打印任何内容。如果行不包含 :,则为每一行打印 OFS。在该程序的 END 块中打印换行符。

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