2

一部のファイルのテキストを置き換えるために、Ubuntu の Bash シェルで sed を使用しています。ここに私が持っているテキストがあります:

 BLah </V>
<N> Blah

変換したいものは次のとおりです。

Blah" = "Blah

これが私が使用しているsedコマンドです:

sed -i 's@ </V>\n<N> @" = "@g'

sedこのコマンドを除いて、他のすべてのコマンドが機能しています。これは、改行文字が含まれる唯一の検索と置換の状況です。問題は、\n私が思っていたように改行文字と一致していないようです。

スクリプトのどこが間違っていますか?

4

2 に答える 2

3

sed は、1 行で単純な置換を行うための優れたツールです。他のテキスト処理では、awk を使用するだけです。

$ cat file
Blah </V>
<N> Blah

$ awk -v RS= 'sub(/ <\/V>\n<N> /,"\" = \"")' file
Blah" = "Blah

このホールドパターン、サブスペースのトランスポーターバッファー、または必要なものはどれもありません-レコードセパレーターを改行以外に設定し、複数行の文字列を他の文字列と同様に扱います。

于 2013-02-15T20:17:53.883 に答える