bash脚本使用sed替换两次

时间:2013-10-03 10:36:51

标签: sed

file1包含:

first=stan
last=smith

我想创建包含

的file2
first=homer
last=simpson

script.sh包含

#!/bin/bash
sed s/stan/$1/ file1 >tempfile
sed s/smith/$2/ tempfile >file2
rm tempfile

script.sh本垒打辛普森做我想要的。
有没有更好的方法在bash脚本中执行此操作而不创建和删除tempfile?

2 个答案:

答案 0 :(得分:1)

是的,你可以:

$ 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

答案 1 :(得分:0)

Sed支持多个表达式。所以你可以这样做:

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

我还建议使用双引号来阻止wordsplitting