问题描述
我正在使用
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