Shell脚本:查找文本文件中的文本

3

我正在尝试在文本文件中查找字符串。如果字符串1不存在,则在字符串2后添加字符串1。否则,如果字符串1存在,则不进行任何操作。

以下是我目前的代码:

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

同时,我如何在字符串中包含“/”字符?
2个回答

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

然而,你可以跳过if语句,因为sed已经在测试字符串是否存在。这样,你只需要一次读取文件,而不是两次。如果你想让修改直接作用于文件中,请使用sed -i


抱歉,我打错了字,sed 应该检查 string2 的存在。 - Matt

0

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

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

括号和命令替换是不必要的。-eq 1 不会通过,因为退出代码没有输出,它被保存在 $? 中。 - Dennis Williamson
是的,你说得对,我会修改代码。关于括号,即使它们不是必需的,我还是喜欢把它们放在那里,因为我觉得这样的代码更易读。 - krtek

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接