나는 리눅스 명령을 배우고 있는데이 오류가 발생했습니다. 내 텍스트는 다음과 같습니다.
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 $
출력하려면( $
여기서 줄 끝을 표시하십시오).