논리는 어떻게 작성하나요?
Test total=100
Test scored=80
Tests failed=0
파일에 및 존재 Test total
하는지 확인하려면 bash 파일에 스크립트를 작성해야 합니다 . grep 명령을 사용해야 하는데 이 경우 새 줄을 확인하는 방법은 무엇입니까?Test scored
Tests failed=0
그리고 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
일치하는 행의 개수를 제공합니다.$( )
명령의 결과를 변수로 반환합니다.