
私の/etc/aliasesファイルを編集する必要がありますが、100を超えるホストに同じファイルがあるので、スクリプトを作成して実行したいと思います。いくつかのエイリアス項目があり、そのうちの1つから次のようにユーザーとカンマ区切り文字を削除したいと思います。
alias_name1: [email protected],[email protected],[email protected]
alias_name2: [email protected],[email protected],[email protected]
だから「取り除きたいなら、[Eメール保護]「alias_name2」の代わりに「alias_name1」にある「今持っている唯一の例は、ファイル全体からその文字列を削除するか、ファイルの特定の行からその文字列を削除するだけなので、どうすればよいですか?」動作しません。
答え1
削除するが削除しない
",[email protected]"
"alias_name1"
"alias_name2"
sed
方法:
sed -E '/^alias_name1/ s/,name2@example\.com(,?)/\1/' /etc/aliases
最初のキャプチャグループトリックは、(...)
数字が行の終わりまたは中央にあるときにも機能します。,[email protected]
出力:
alias_name1: [email protected],[email protected]
alias_name2: [email protected],[email protected],[email protected]
答え2
sed
代替コマンドの前に検索パラメータを使用できます。
sed '/search_string/ s/remove_string//'
上記のコマンドは、/search_string/
正規表現に一致する行でのみ機能し、一致する内容を空の文字列に置き換えますremove_string
。