2

sedの「置換されたテキスト」フィールドに入力したいテキストを出力するコマンドがあります。しかし、私は

sed: -e expression #1, char 24: unterminated `s' command error.

重要なスニペットは次のとおりです。

input=$(./mid 1 10 random.txt)       
echo $input       
cat $1 |sed "s/times/$input/g" > tester5.txt

そして、これがコマンドライン出力です:

$ ./Batchtest tester.txt      
some random text some random text some random text some random text      
sed: -e expression #1, char 24: unterminated `s' command

ご覧のとおり、「。/ mid 1 10 random.txt」は、sedの「replacedtext」フィールドにプラグインしたいテキストを出力しますが、機能していません。$ inputの周りに引用符を追加しようとしましたが、それは役に立ちません。

どんな助けでも大歓迎です!

4

2 に答える 2

2

$inputに特別な意味を持つ文字が含まれている場合がありますsed。それらを引用する(つまり、バックスラッシュを前に付ける)か、Perlなどのより高度なツールを使用して置き換えることができます。

perl -e '$input = `./mid 1 10 random.txt`;
         while (<>) {
             s/times/$input/g;
             print;
         }' "$1" > tester5.txt
于 2012-07-27T14:55:59.310 に答える
0

awkでは、オプションを使用して出力を変数に入れることができ-vます。このメソッドを使用すると、出力でsedの構文に固有の文字について心配する必要はありません。

input=$(./mid 1 10 random.txt)
awk -v input="$input" '{ gsub(/times/,input); print }' "$1" > tester5.txt
于 2012-07-27T15:18:11.467 に答える