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 的“替换文本”字段的文本,但它不起作用。我尝试在 $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

-v使用 awk,您可以使用选项将输出放入变量中。使用这种方法,您不必担心输出中 sed 语法的特殊字符。

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