Linux 如何使用sed替换字符串中的多个字符?
我想用sed替换字符串的一些字符 我尝试了以下两种方法,但我需要知道是否有一种更优雅的形式可以在不使用管道或Linux 如何使用sed替换字符串中的多个字符?,linux,sed,Linux,Sed,我想用sed替换字符串的一些字符 我尝试了以下两种方法,但我需要知道是否有一种更优雅的形式可以在不使用管道或-e选项的情况下获得相同的结果: sed 's#a#A#g' test.txt | sed 's#l#23#g' > test2.txt sed -e 's#a#A#g' -e 's#l#23#g' test.txt > test2.txt 您可以使用分隔命令,而不是使用多个-e选项在单个参数中 sed 's/a/A/g; s/1/23/g' test.txt > te
-e
选项的情况下获得相同的结果:
sed 's#a#A#g' test.txt | sed 's#l#23#g' > test2.txt
sed -e 's#a#A#g' -e 's#l#23#g' test.txt > test2.txt
您可以使用
分隔命令,而不是使用多个-e
选项代码>在单个参数中
sed 's/a/A/g; s/1/23/g' test.txt > test2.txt
如果您正在寻找一种在一个命令中执行多个替换的方法,我认为没有办法。如果它们都是单字符替换,您可以使用类似于y/abc/123
的命令,将a
替换为1
,b
替换为2
,将c
替换为3
。但是没有多字符版本。除了Barmar的答案之外,您可能希望使用regexp字符类对一个特定字符执行多个字符替换
这里有一个例子来说明问题,试着在使用和不使用sed
的情况下运行它来感受效果
echo-e'abc\ndef\nghi\nklm'| sed's/[adgk]/1/g;s/[behl]/2/g;s/[cfim]/3/g'
注意:永远不要从安全沙盒之外的陌生人那里运行示例代码当您有很多字符串要替换时,您可以将它们收集到一个变量中
seds="s/a/A/;"
seds+="s/1/23/;"
echo "That was 1 big party" |
sed ${seds}
感谢Barmar的支持,这是获得相同结果的最好方法。