如何使用单线sed或perl替换换行符和空格,直到特定字符串?
例如,我想在文件中的字符串'XYZ'之前替换换行符和以下空格。所有以单词“ XYZ”开头的行都将附加在前一行之前(带有一个额外的空格)。
lorem ipsum dolor坐在amet
XYZ lorem ipsum dolor坐在amet
xxx lorem ipsum dolor坐amet
DDD lorem ipsum dolor坐在amet
XYZ lorem ipsum dolor坐在amet
cccc lorem ipsum dolor坐amet
XYZ lorem ipsum dolor坐在amet
输出将是
lorem ipsum dolor坐amet XYZ lorem ipsum dolor坐amet
xxx lorem ipsum dolor坐amet
DDD lorem ipsum dolor坐在阿梅特XYZ lorem ipsum dolor坐在阿梅特
cccc lorem ipsum dolor坐amet XYZ lorem ipsum dolor坐amet
perl -0777pe's/\n\s*(?=XYZ)/ /g' file
Run Code Online (Sandbox Code Playgroud)
-0777 使整个文件被视为一行。
编写的命令将输出到STDOUT,您可以根据需要重定向。-i~并且-i将编辑“到位”,以分别不备份。