delete および sed コマンドの使用

delete および sed コマンドの使用

私の/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

関連情報