0

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 スクリプトでこれを行うより良い方法はありますか?

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オプションは同じ行で 2 つの異なる 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 に答える