我在shell脚本中使用sed用一个存储在shell变量中的句子替换文件中的单词。该句子包含空格和不同的字符。
例如:
sentence="new number is > than 2.5 and < than 3.8"
sed "s|word|$sentence|g" -i Example_file.txt
文件中的行:
tile = "word - Final plot"
预期结果:
title = "new number is > than 2.5 and < than 3.8 - Final plot"
获得结果:
title = "new - Final plot"
正如您在上面所看到的,问题是sed
总是只用句子的第一个单词替换“单词”,它在空格处停止。我尝试了命令的不同变体:
sed 's|word|'"$sentence"'|g' -i Example_file.txt
sed "s|word|${sentence}|g" -i Example_file.txt
这些似乎都不起作用。要检查空格是否确实是问题,我将其替换为"_"
,当我这样做时,sed
将替换为整个句子。
任何人都知道如何强制sed接受空格并使用整个句子?
答案 0 :(得分:0)
尝试此操作,根据您的问题解决我的问题,告诉我们您目前正在做的事情:
文件1:
#!/bin/sh
sed 's/\<word\>/'"$1"'/' abc.txt
file2的:
#!/bin/sh
sentence="new number is > than 2.5 and < than 3.8"
./file1 "$sentence"
Google&#34;引用您的shell变量&#34;。上面假设你有GNU sed用于单词边界\<...\>
。如果你没有摆脱它们以确定它是否有效,那么我们可以谈谈你如何满足其他seds中对它们的需求。