ファイルに変更を保存せずに2つのsedをマージします。

ファイルに変更を保存せずに2つのsedをマージします。

sedを使用して、ファイル内の単語と単語を含むコメント行を読み取って検索し、保存すると、\などの特殊記号をファイルから削除できますが、\はそのまま残りますか?

私の言葉は、会社名(2単語)を含むファイルがあり、その間に文字がある可能性があり、元のファイルでこれらのシンボルに文字エスケープ(正規表現)を使用することです。例えば

lunar_static KKK_ITALY_NUM "/^08.00.Delta\\_M$/"
lunar_static KKK_ROMANIA_NUM "/^08.00.Delta\\.M$/"
lunar_static KKK_ITALY_NUM "/^08.00.Red\\ Park$/"

\を何もないものに変えてコメントしましたが、私も以前のように\で保存したかったです。私が望む出力:

lunar_static KKK_ITALY_NUM "/^08.00.Delta\\ M$/"
lunar_static KKK_ROMANIA_NUM "/^08.00.Delta\\ M$/"
#lunar_static KKK_ITALY_NUM "/^08.00.Red\\ Park$/"

私のスクリプトは次のとおりです

sed -E -e 's/\\//g' -i -e '/ITALY.*Delta M/s/^/#/' file.txt

しかし、\なしで保存されます。はい、削除せずに「Red\\\\ Park」を検索するだけです。ただし、名前が20個の場合、2〜3語の各会社名に\\\\を入力したくありません。 :)または別のビジョンがあり、それを実行するために(sedの代わりに)他のコマンドを使用することもできます。 ?私は私が望むものを得るために可能なすべての提案や助けを受け入れますか?とても感謝しています!

ベストアンサー1

私が正しく理解したら、これがうまくいくかどうか見てみましょう。

sed -E -e 's/^(.*\w+)\\\\ /#\1\\\\ /' -e 's/\\\\.([^ ]*)$/\\\\ \1/ file

出力:

lunar_static KKK_ITALY_NUM "/^08.00.Delta\\ M$/"
lunar_static KKK_ROMANIA_NUM "/^08.00.Delta\\ M$/"
#lunar_static KKK_ITALY_NUM "/^08.00.Red\\ Park$/"

おすすめ記事