我需要搜索并替换多个单词。例如,在我的文件中,我想搜索后面带有逗号的任何工作日名称: Sat,
or Sun,
or Mon,
or or Tue,
or Wed,
or Thur,
orFri,
到不带逗号的名称: Saturday
or Sunday
or or Monday
or Tuesday
or Wednesday
or Thursday
or 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'