使用sed替换两次的bash脚本

使用sed替换两次的bash脚本,sed,Sed,文件1包含: first=stan last=smith 我想创建文件2,其中包含 first=homer last=simpson #!/bin/bash sed s/stan/$1/ file1 >tempfile sed s/smith/$2/ tempfile >file2 rm tempfile script.sh包含 first=homer last=simpson #!/bin/bash sed s/stan/$1/ file1 >tempfile sed

文件1包含:

first=stan
last=smith
我想创建文件2,其中包含

first=homer
last=simpson
#!/bin/bash
sed s/stan/$1/ file1 >tempfile
sed s/smith/$2/ tempfile >file2
rm tempfile
script.sh包含

first=homer
last=simpson
#!/bin/bash
sed s/stan/$1/ file1 >tempfile
sed s/smith/$2/ tempfile >file2
rm tempfile
script.sh荷马·辛普森做我想做的事。
在bash脚本中,有没有更好的方法可以在不创建和删除tempfile的情况下执行此操作?

是的,您可以:

$ s1="homer"
$ s2="simpson"
$ sed -e "s/stan/$s1/g" -e "s/smith/$s2/g" file1 > file2
$ cat file2
first=homer
last=simpson
如您所见,
-e
选项用于在同一行中执行两个不同的sed命令

在bash脚本中:

#!/bin/bash
sed -e "s/stan/$1/g" -e "s/smith/$2/g" file1 > file2

Sed支持多个表达式。因此,您可以执行以下操作:

sed -e "s/stan/$1/" -e "s/smith/$2/" file1 > file2

我还建议使用双引号来防止。

这只是更新了
file1
,请求
我想创建包含
单引号的file2,因为单引号会删除特殊字符的含义,因此对于sed参数更为合适。(虽然这里当然会阻止
$1
的扩展)