查找并替换多对字符

时间:2013-08-26 15:04:00

标签: regex text sed

我有一个文本文件并使用带有正则表达式的sed编辑器来查找和替换其中的字符。比如,a-> b,g-> h,r-> d和e-> q。

像这样:

sed -i "s/a/b/g" file.html >NUL
sed -i "s/g/h/g" file.html >NUL
sed -i "s/r/d/g" file.html >NUL
sed -i "s/e/q/g" file.html >NUL

一切正常。但是我希望将它组合成一个正则表达式。我可以吗?在谷歌上搜索并阅读了很多关于refex之后,我现在看不到任何办法。谢谢!

3 个答案:

答案 0 :(得分:5)

tr是执行此操作的命令:tr < file.html 'agre' 'bhdq'

但如果你问如何让命令一起运行,请执行:

sed -e "s/a/b/g" -e "s/g/h/g" -e "s/r/d/g" -e "s/e/q/g" file.html

或者更常见的是,如果命令不同:

sed -e "s/a/b/g" file.html | sed -e "s/g/h/g" |
    sed -e "s/r/d/g" | sed -e "s/e/q/g"

答案 1 :(得分:1)

这可能适合你(GNU sed):

sed -i 'y/agre/bhdq' file

答案 2 :(得分:1)

也可以从文件中读取sed命令:sed -f commands.sed file.html

commands.sed
---- 
s/a/b/g
s/g/h/g
s/r/d/g
s/e/q/g