SED - 特殊文字(#、%)の検索と置換

SED - 特殊文字(#、%)の検索と置換

私はこれが非常に簡単な質問であることを知っていますが、解決策を見つけるのに苦労しています。

ファイル内の次の部分を自動的に見つけて置き換える必要があります/etc/aliases

# Person who should get root's mail
#root:   marc

次のようにする必要があります。

# Person who should get root's mail
root:  [email protected]

そして私は解決策を見つけることができませんでした。いくつかの提案をすることができますか?これは必要ありませんsed

答え1

GNUシステムでは、次のコマンドを使用できます。

sed -i '/^#[[:blank:]]Person/{n;s/#root:[[:blank:]]\+marc/root:\[email protected]/;}' file

で始まる行を検索します# Person。次に、次の行に切り替えて#root:<blanks>marcに置き換えますroot:<tab> ...。この-iフラグはファイルをその場で編集します。

-i\+および\tGNU拡張です。標準同等物は\+より冗長です\{1,\}。ファイルを適切に編集するには、一時ファイルを使用する必要があります。標準に対応するのは、\tタブ文字を文字通り挿入することです。

関連情報