0

ファイル内の特定の種類の文字列を置き換える必要がある状況があります。

シナリオは次のとおりです。

次のようなユーザー入力:

abc = 21
xyz=32;34;35

ユーザーは xyz に多くの数値を入力できますが、形式は ";" にする必要があります。分離された値今、特定のファイルでこれらの値を置き換える必要があります。test.txt と仮定します。

このファイルの形式は次のとおりです: test.txt

cond0=abc
cond1=xyz
Cond2=abcxyz%

したがって、出力は次のようになります

cond0=21
cond1=32;34;35
cond2=2132%;2134%;2135%

以下のコマンドを使用してこれを行いますが、これから cond2 で正しい出力を取得できません

sed "s/abc/${abc}/g" "$TEST_DIR/$file" > "$TEST_DIR/$file.bak" && mv "$TEST_DIR/$file.bak" "$TEST_DIR/$file"

sed "s/xyz/${xyz}/g" "$TEST_DIR/$file" > "$TEST_DIR/$file.bak" && mv "$TEST_DIR/$file.bak" "$TEST_DIR/$file"

誰でもこれを見ることができますか?

4

2 に答える 2

0

バッシュを使って、

abc=21
xyz='32;34;35'
abcxyz=$(sed -r "s/^|;/\0${abc}/g;s/;|$/%\0/g" <<< "${xyz}")
sed -i~ "s/abcxyz%/${abcxyz}/;s/abc/${abc}/;s/xyz/${xyz}/" inputFile
于 2012-06-06T05:39:31.800 に答える