2

ワンライナーsedまたはperlを使用して特定の文字列になるまで、改行とそれに続く空白を置き換えるにはどうすればよいですか?

たとえば、ファイル内の文字列「XYZ」の前の改行とそれに続く空白を置き換えたいとします。単語「XYZ」で始まるすべての行は、前の行の前に追加されます(1つの余分な空白があります)。

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 sit 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 sit amet XYZ lorem ipsum dolor sit amet
4

2 に答える 2

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

-0777ファイル全体が 1 行と見なされます。

書かれたコマンドは STDOUT に出力されます。これは、必要に応じてリダイレクトできます。それぞれバックアップありとなしで、「その場で」編集します-i~-i

于 2013-02-21T10:02:57.113 に答える
0

これを試して:

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

于 2013-02-21T09:59:54.657 に答える