在shell脚本中搜索字符串

时间:2014-09-29 14:28:32

标签: linux bash shell

我正在尝试学习shell脚本。很抱歉,如果我的问题很简单。

我有一个名为one.txt的文件,如果字符串中存在字符串1.2或1.3,那么我必须显示成功消息,否则显示失败消息。

我试过的代码如下,

#!/bin/bash
echo "checking"
if grep -q 1.2 /root/one | grep -q 1.3 /root/one; then
echo " vetri Your NAC version"
fi

我在这里做错了什么?

4 个答案:

答案 0 :(得分:0)

您必须使用||

#!/bin/bash
echo "checking"
if grep -q 1.2 /root/one || grep -q 1.3 /root/one; then
echo " vetri Your NAC version"
fi

|运算符称为管道。它会将|之前的命令输出传递给|之后的命令。

答案 1 :(得分:0)

您还可以在grep模式中包含OR,如下所示:

grep '1.2\|1.3' /root/one

详情here

更新: 正如twalberg在评论中指出的那样,我的答案不够准确。更好的模式是:

grep '1\.2\|1\.3' /root/one

甚至更好,因为更紧凑:

grep '1\.[23]' /root/one

答案 2 :(得分:0)

最好将这些greps与|(OR运算符):

连接起来
grep '1.2\|1.3'

grep -E '1.2|1.3'

答案 3 :(得分:0)

我想更简单的方法是创建一个变量来检查出现次数:

#!/bin/bash
echo "checking"
CHECK=`egrep -c '1\.(2|3)' /root/one`
if [ "$CHECK" -gt 0 ]; then
  echo "vetri Your NAC version"
fi