grep 명령을 사용하여 여러 문자열 처리

grep 명령을 사용하여 여러 문자열 처리

논리는 어떻게 작성하나요?

Test total=100
Test scored=80 
Tests failed=0

파일에 및 존재 Test total하는지 확인하려면 bash 파일에 스크립트를 작성해야 합니다 . grep 명령을 사용해야 하는데 이 경우 새 줄을 확인하는 방법은 무엇입니까?Test scoredTests 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

어디

  • egrepgrep 확장을 허용합니다(예: |(또는) 사용).
  • -c일치하는 행의 개수를 제공합니다.
  • $( )명령의 결과를 변수로 반환합니다.

관련 정보