微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

有没有一种方法可以检查子字符串是否在Linux / Bash脚本的字符串中,并且在条件if语句中可以使用短行?

如何解决有没有一种方法可以检查子字符串是否在Linux / Bash脚本的字符串中,并且在条件if语句中可以使用短行?

我正在使用

if[ "$wordCount" -gt 10 ]

要检查行中是否有10个以上的单词,但是如何检查行中是否也包含特定字符串,例如“ brown Cow”?

因此,只有当该行的wordCount超过10并且在$ line字符串中包含字符串“ brown Cow”时,该条件条件才起作用。有没有办法在Linux / Bash中做到这一点?还是我需要多行或不同条件的案例来做到这一点?

解决方法

使用grep然后管道传递到while循环中,我只通过首先将具有指定字符串的行运行到循环中,并使用与以下条件相同的条件if语句,就可以使其工作:

grep -n "Brown Cow" fileName | while read line;
do 
      lineNumber=$(echo $line | cut -d: -f1)
      lineText=${line#*;}
      wordCount=`echo $line | wc -w`
      if[ "$wordCount" -gt 10 ]
          Commands
done

我应该更新我的原始问题以显示更多代码,还是对以后遇到类似问题的任何人足够的答案?

,

您可以在[[表达式中使用正则表达式或glob模式。由于您要查找的字符串包含空格,因此需要将其放在变量中以补偿解析器限制:

phrase="Brown Cow"
if [[ $wordCount -gt 10 && $line =~ $phrase ]]; then
    # Success
else
    # Failure
fi

# Note the *'s for a wildcard pattern match
phrase="*Brown Cow*"
if [[ $wordCount -gt 10 && $line = $phrase ]]; then
    # Success
else
    # Failure
fi

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。