【问题标题】:Shell Scripting finding text in a text fileShell 脚本在文本文件中查找文本
【发布时间】:2011-07-06 16:40:32
【问题描述】:

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

这是我目前所拥有的:

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

另外如何在我的字符串中包含“/”字符?

【问题讨论】:

    标签: string shell scripting sed


    【解决方案1】:

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

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

    【讨论】:

    • 括号和命令替换不是必需的。 -eq 1 不会通过,因为退出代码没有输出,它保存在 $? 中。
    • 是的,你是对的,我会修改代码。关于括号,即使没有必要,我也喜欢放置它们,我发现使用它们的代码更具可读性。
    【解决方案2】:
    if grep -qs string1 myfile
    then
        sed '/string1/ a\ string2' myfile
    fi
    

    但是,您可以跳过if,因为sed 无论如何都在测试字符串是否存在。这样,您只读取文件一次而不是两次。如果您希望就地更改文件,请使用 sed -i

    【讨论】:

    • 对不起,我打错了,sed 应该检查 string2 的存在。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-19
    • 1970-01-01
    相关资源
    最近更新 更多