특정 문자로 끝나지 않는 행 일치

특정 문자로 끝나지 않는 행 일치

나는 리눅스 명령을 배우고 있는데이 오류가 발생했습니다. 내 텍스트는 다음과 같습니다.

Fred apples 20
Susy oranges 12 
Mark watermellons 12
Robert pears 4
Terry oranges 9
Lisa peaches 7
Egemen aaaa 12
Susy oranges 12
Mark grapes 39
Anne mangoes 7
Greg pineapples 3
Oliver rockmellons 2
Betty limes 14

로 끝나지 않는 줄을 검색했습니다 2. 내 명령:

egrep '2.+' mysampledata.txt

하지만 흥미로운 점은 다음 두 줄이 표시된다는 것입니다.

Fred apples 20
Susy oranges 12

이 명령의 다른 매개 변수를 시도하고 줄 순서를 변경했습니다. 나는 잘못된 결과를 얻지 못합니다.

이 공사에 문제가 있는 걸까요?

답변1

줄이 "2"로 끝나지 않도록 하려면 다음을 시도하십시오.

grep '[^2]$' <filename>

여기서 '$'는 줄의 끝과 일치하고 '[^2]는 '2'를 제외한 모든 것을 의미합니다. 따라서 "[^2]$"는 "2"를 제외한 줄 끝의 모든 문자와 일치함을 의미합니다.

명령은 egrep '2.+' mysampledata.txt"2"가 포함된 행과 한 번 이상 나타나는 문자를 검색합니다. 따라서 출력은 다음과 같아야 합니다.

Fred apples 20

줄 끝 부분의 잘못된 배치로 인해 추가 줄이 발생할 Susy oranges 12수 있습니다 .space

편집하다:다음은 끝 부분의 공백 수나 인쇄할 수 없는 문자도 고려합니다.

grep -v '2[[:blank:][:cntrl:]]*$' <filename>

이는 "2" 또는 "2" 없이 줄을 인쇄하고 그 뒤에 줄 끝에 공백이나 제어 문자가 오는 것을 의미합니다.

답변2

당신이 해야 할 일:

grep -v '2 *$' mysampledata.txt

-v옵션은 일치를 반전시킵니다. 이것은 파일의 경우이고 원하지 않는 것 같기 때문에 끝에 공백이 있는 줄을 지원합니다.

Susy oranges 12 $

출력하려면( $여기서 줄 끝을 표시하십시오).

관련 정보