0

文件 1 包含:

first=stan
last=smith

我想创建包含

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 脚本中执行此操作而无需创建和删除临时文件?

4

2 回答 2

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
于 2013-10-03T10:39:48.800 回答
0

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

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

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

于 2013-10-03T10:43:28.690 回答