我如何编写逻辑
Test total=100
Test scored=80
Tests failed=0
我需要在 bash 文件中编写脚本来检查Test total
,Test scored
和是否Tests failed=0
存在于文件中。我需要使用 grep 命令..但是在这种情况下如何检查新行?
还有数字100,80,我不需要寻找。只是之前的文字。
答案1
grep -e "Test total=[0-9][0-9]*$" -e "Test scored=[0-9][0-9]*$" -e "Tests failed=[0-9][0-9]*$" foofile
考虑到您只想匹配下面给出的输入的前 3 行:
Test total=100
Test scored=80
Tests failed=0
Test total=100 alpha
Test scored=80 beta
Tests failed=0 gamma
Test total=
Test scored=
Tests failed=
答案2
使用 bash 和 grep,您可以在函数中测试多个 grep 调用的返回状态,例如:
#!/usr/bin/env bash
failed_zero () {
grep -q "Test total" "$1" || grep -q "Test scored" "$1" || grep -q "Test failed=0" "$1"
return $?
}
# test first file name on command line
failed_zero $1
echo $?
答案3
尝试
found=$( egrep "Test total|Test scored|Tests failed" -c file )
if [ $found -eq 3 ]
then
## all three test
else
## some failed
fi
在哪里
egrep
允许扩展 grep,即使用|
(或)-c
给出匹配行的计数。$( )
将命令的结果作为变量返回。