2011-03-01 90 views
3

我正在检查文本文件中的字符串。如果string1不存在,则在字符串2之后添加string1。否则,string1不存在。Shell脚本查找文本文件中的文本

这里是我到目前为止有:

if [ string1 does not exisit ] //Stuck at this 
then 
sed '/string2/ a\ string1' myfile 
fi 

又怎么可以加入我的琴弦“/”字符?

回答

4
if grep -qs string1 myfile 
then 
    sed '/string1/ a\ string2' myfile 
fi 

但是,你可以跳过,因为sedif是字符串的存在反正测试。这样,你只能读一次文件而不是两次。如果您想要对文件进行就地更改,请使用sed -i

+0

对不起,我做了一个错字,用sed应该检查字符串2的存在。 – Matt 2011-03-01 17:49:32

0

您可以使用grep,例如像这样:

$(grep -q "string1" myfile) 
if [ $? -eq 1 ]; then 
    sed '/string1/ a\ string2' myfile 
fi 
+0

括号和命令替换不是必需的。 '-eq 1'不会通过,因为退出代码不会被输出,而是保存在'$?'中。 – 2011-03-01 17:34:40

+0

是的,你说得对,我会修改代码。关于括号,我喜欢把它们放在一起,即使它们不是必需的,我发现它们的代码更具可读性。 – krtek 2011-03-01 17:37:22