게임 전에 단어를 찾는 방법

게임 전에 단어를 찾는 방법

다음 로그 파일이 있습니다. 쉘 스크립트를 사용하여 오류/의심스러운 상황이 있는지 알아야 합니다.

오류를 찾아서 이전 단어를 확인해야 합니다. 0보다 크면 DBA가 작업을 수행한 것입니다.

Checking pubs2: Logical pagesize is 4096 bytes
DBCC CHECKSTORAGE for database 'pubs2' sequence 17 completed at Oct 21 2015  3:17PM. 4 faults and 0 suspect conditions were located. 0 checks were aborted. You should investigate the recorded faults, and plan a course of action that will correct them.

Linux/Bash 셸에서 다음 명령을 시도했는데 제대로 작동합니다.

FLTCNT=`cat $MAILLOG | grep -oP '\S+(?=\s+faults and)'`
SPTCNT=`cat $MAILLOG | grep -oP '\S+(?=\s+suspect)'`

if [ $FLTCNT -gt 0 ] || [ $SPTCNT -gt 0 ] ; then
    FAILED="Y"
#   echo "Fault / suspect conditions found"
    cat $MAILLOG >> $ERRLOG
fi

하지만 AIX 서버에서 동일한 작업을 수행하면 오류가 발생합니다.

grep: illegal option -- o
grep: illegal option -- P
usage: grep [-r] [-R] [-H] [-L] [-E|-F] [-c|-l|-q] [-insvxbhwyu] [-p[parasep]] -e pattern_list...
    [-f pattern_file...] [file...]
usage: grep [-E|-F] [-c|-l|-q] [-insvxbhwyu] [-p[parasep]] [-e pattern_list...]
    -f pattern_file... [file...]

답변1

두 문자열 중 하나가 양의 정수 값 과 X faults함께 파일에 존재하고 같지 않은 경우 작업을 수행한다고 가정합니다 .Y suspectXY0$MAILLOG

if grep -qwE '([1-9]|[0-9]{2,}) (faults|suspect)' "$MAILLOG"; then
    # do something
fi

이 패턴은 ([1-9]|[0-9]{2,})0보다 큰 단일 숫자 또는 두 자리 이상의 숫자와 일치합니다.

패턴은 (faults|suspect)문자열 faultsOR 과 일치합니다 suspect. 당신도 거기에 포함되길 원한다면 checks, 를 사용하세요 (faults|suspect|checks).

-qgrep유틸리티가 생성하는 오류가 아닌 출력을 끄는 옵션(우리는 종료 상태, grep즉 패턴과 일치할 수 있는지 여부에만 관심이 있습니다).

-w옵션을 사용하면 grep"단어 검색"이 수행됩니다. 이 경우에는 0이 새 "단어"를 시작하지 않지만 새 "단어"를 시작하기 때문에 10 faults하위 문자열이 아닌 검색을 의미합니다 . 이는 또한 이 문자열이 (가능성은 낮지만) 일치를 트리거하지 않는다는 것을 의미합니다.0 faults1012 faultsmen

alternating()을 사용하는 확장 정규식에 대한 -E지원이 필요합니다 .|

답변2

grep을 시도해 볼 수 있습니다.

grep -c "your word to match" /log/file

예를 들어:

$ grep -c "upgraded" /var/log/pacman.log 
244

관련 정보