空行と特定の文字列をその文字列に置き換えるにはどうすればよいですか?

空行と特定の文字列をその文字列に置き換えるにはどうすればよいですか?

sedorまたは他のものを使用して空の行のawk後に特定の文字列(orなど)が続くものをその文字列(したがってor)に置き換えるにはどうすればよいですか?&\end{align}&\end{align}

たとえば、これは初期ファイルです(編集する:あまりあいまいな例):

The quick brown fox jumps over the sleazy dog.

Indeed, the quick brown fox jumps over the sleazy dog.

\begin{align}


& foo

& bar

\end{align}

The quick brown fox jumps over the sleazy dog.

Indeed, the quick brown fox jumps over the sleazy dog.

これが私が得たいものです:

The quick brown fox jumps over the sleazy dog.

Indeed, the quick brown fox jumps over the sleazy dog.

\begin{align}
& foo
& bar
\end{align}

The quick brown fox jumps over the sleazy dog.

Indeed, the quick brown fox jumps over the sleazy dog.

ベストアンサー1

GNU sed正規表現の作成を支援するための拡張正規表現サポート(-E)があります。

sed -Ei -e '
  /./b
  :a
    $q;N
  /\n$/ba
  s/^\n+(&|\\(begin|end)\{align\})/\1/
' file

空の行の収集を開始し、空でない行が表示された場合は停止するのがアイデアです。次に、正規表現は、空行ブロックの後に次の3行のうちの1つが続くことを確認します。

  • アンパサンドで始まる行&
  • \begin{align} で始まる行
  • \end{align} で始まる行

次に、これらの特定の空行を削除します。

おすすめ記事