複数の単語を一度に検索して置換する方法

複数の単語を一度に検索して置換する方法

複数の単語を検索して置き換える必要があります。たとえば、私のファイルで、後にカンマが付いている平日の名前を検索したいとします。Sat,または、または、または、またはカンマのない名前:または、または、Sun,または、Mon,または私はこれを一つずつ行う方法を知っています。Tue,Wed,Thur,Fri,SaturdaySundayMondayTuesdayWednesdayThursdayFriday

sed 's/Sat,/Saturday/g' myfile.txt > output.txt

ただし、毎週複数のファイルを確認する必要があるため、すべての名前を確認して一度に置き換えるより効率的な方法を見つける必要があります。スクリプトを使ってこれを行うことができることを知っていますが、以前はこれを行ったことはありません。誰もがこれについてよく知っている場合は、今回学び、次に自分で行うことができます。

答え1

次のように複数のsed式を連結できます-e

sed -e 's/Sat,/Saturday/g' -e 's/Sun,/Sunday/g' <file>

Sat,これにより、すべての項目がwithSaturdayとすべての項目にSun,置き換えられますSunday

答え2

このソリューションを共有する必要があると思いました。私がダウンロードしたメディアの字幕には、NSFC(子供にとって安全ではない)という言葉がいっぱいでした。これにより、不快感を与える単語が再帰的に削除されます。

find . -type f -name "*.srt" -exec sed -i 's/\(word1\|word2\|word3\|word4\|word5\|word6\|word7\|word8\)//g' {} +

これにより削除が確認されます。

grep --include=\*.srt -rnwE . -e 'word1|word2|word3|word4|word5|word6|word7|word8'

関連情報