2

如何使用单行sedperl替换换行符和后面的空格,直到特定字符串?

例如,我想在文件中的字符串“XYZ”之前替换换行符和后面的空格。所有以单词 'XYZ' 开头的行都将附加在上一行之前(带有一个额外的空格)。

lorem ipsum dolor 坐 amet
  XYZ lorem ipsum dolor sit amet
    XXX lorem ipsum dolor sit amet
  DDD lorem ipsum dolor sit amet
      XYZ lorem ipsum dolor sit amet
cccc lorem ipsum dolor sat amet

   XYZ lorem ipsum dolor sit amet

输出将是

lorem ipsum dolor sit amet XYZ lorem ipsum dolor sit amet
    XXX lorem ipsum dolor sit amet
  DDD lorem ipsum dolor sit amet XYZ lorem ipsum dolor sit amet
cccc lorem ipsum dolor sat amet XYZ lorem ipsum dolor sat amet
4

2 回答 2

5
perl -0777pe's/\n\s*(?=XYZ)/ /g' file

-0777导致整个文件被视为一行。

写入的命令将输出到 STDOUT,您可以随意重定向。-i~并将-i编辑“就地”,分别有和没有备份。

于 2013-02-21T10:02:57.113 回答
0

试试这个:

s/[\s\n]+XYZ/ XYZ/gsm;

于 2013-02-21T09:59:54.657 回答