如何一次性搜索和替换多个单词

如何一次性搜索和替换多个单词

我需要搜索并替换多个单词。例如,在我的文件中,我想搜索后面带有逗号的任何工作日名称: Sat,or Sun,or Mon,or or Tue,or Wed,or Thur,orFri,到不带逗号的名称: Saturdayor Sundayor or Mondayor Tuesdayor Wednesdayor Thursdayor Friday。我知道如何一一做到这一点:

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,with 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'

相关内容