【发布时间】:2020-12-16 04:42:33
【问题描述】:
我想替换文件中的换行符\n仅当下一行以可选空格开头并且小于字符\s*<。
示例文本:
FIRST LINE ('<foo>
<bar>
<baz>')
ANOTHER LINE 'lorem ipsim', '<dolor>
<and>
<p>again</p>
</and>
</dolor>'
我需要在命令行上使用 sed、perl、tr、...
我尝试了几个命令,但到目前为止没有一个有效。
基本上就是:sed -i -e 's|\n+\s*\<|<|gm' filename
看起来 sed 看起来并不比换行符更远。
https://regex101.com/r/VkRO9o/3
有什么命令可以做到吗?
编辑:预期输出:
FIRST LINE '<foo> <bar><baz>'
ANOTHER LINE 'lorem ipsim', '<dolor><and><p>again</p></and><dolor>'
空格不换也没关系。
【问题讨论】:
-
@anubhava 我在问题中添加了预期的输出。我的文件中有很多新行,但我只想加入
<开头的行(之前有可选空格。所以 FIRST LINE 和 另一行应该保留。 -
可以简单如
perl -0777 -pe "s/\n\s*(<)/$1/g" input.txt
标签: regex perl sed command-line-interface regexp-replace