我想用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 > test2.txt
如果您正在寻找一种在单个命令中执行多个替换的方法,我认为这是不可能的。如果它们都是单个字符替换,您可以使用像y/abc/123
这样的命令,它将把a
替换为1
,b
替换为2
,并将c
替换为3
。但是没有这样的多字符版本。
当您需要大量字符串进行替换时,可以将它们收集到一个变量中。
seds="s/a/A/;"
seds+="s/1/23/;"
echo "That was 1 big party" |
sed ${seds}