grep을 사용하여 텍스트 파일에서 데이터 추출

grep을 사용하여 텍스트 파일에서 데이터 추출

텍스트 파일에 다음 줄이 있습니다.

severity: Error , count: 10 violations , waived: 7, not waived: 3

쉘에서 단일 명령을 사용한 not waived:후 어떻게 숫자를 추출할 수 있습니까?3greptcsh

답변1

이 경우 더 쉬울 것입니다 awk.

% awk '{ print $NF }' file.txt
3

$NF입력 레코드(행)에서 공백으로 구분된 마지막 필드(열)에 있는 데이터입니다.

grep일반적으로 말하면특정 패턴과 일치하는 전체 행을 가져오는 데 사용되지만 일부 구현은 플래그를 사용하여 행의 비트를 가져오는 데에도 사용할 수 있습니다 -o(일치하는 비트만 반환됨).

% grep -o '[[:digit:]]$' file.txt
3

그러나 온라인 데이터의 일반적인 처리 awk에는 grep.

파일에 관련성이 낮은 다른 데이터 행이 포함된 경우:

% awk '/^severity:/ { print $NF }' file.txt

또한 필드가 줄의 맨 끝에 있지 않은 경우 다음을 사용할 수 있습니다 sed.

% sed -n '/^severity:/s/^.*not waived: \([[:digit:]]*\).*$/\1/p' file.txt
3

관련 정보