我有一个多行文档。我想替换不以数字结尾的行中的换行符
假设文档是:
line1
line2
line
line
line
line4
我想要得到
line1
line2
linelinelineline4
我可以在 Sublime 中通过将 ([^\d])(\n)
替换为 \1
来完成此操作。在 sed 中尝试此操作时,它不起作用。有人可以帮助我这有什么问题吗?提前致谢
最佳答案
sed
不支持 \d
,您可以使用 [0-9]
代替。另外,默认情况下,sed
逐行工作,并且您无法操作行尾的 \n
字符。有多种方法可以克服这个问题,但我不建议使用 sed
来完成此任务。
$ awk '{ORS = /[0-9]$/ ? RS : ""} 1' ip.txt
line1
line2
linelinelineline4
ORS
是输出记录分隔符/[0-9]$/
检查输入行是否以数字结尾- 如果是这样,请使用
RS
作为ORS
(默认为\n
) - 否则,使用空字符串
- 如果是这样,请使用
1
是一个awk
习惯用法,作为打印$0
(输入记录)内容的快捷方式
perl
允许操作换行符,因为它不会像 sed
或 awk
$ perl -pe 's/(?<!\d)\n//' ip.txt
line1
line2
linelinelineline4
关于regex - 在 sed 中无法用新行替换数字,但可以在 sublime 中替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60664940/