sed
orまたは他のものを使用して空の行の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} で始まる行
次に、これらの特定の空行を削除します。