마지막 열만 grep하는 방법은 무엇입니까?

마지막 열만 grep하는 방법은 무엇입니까?

구분 기호로 "|"가 포함된 sometextfile.txt가 있습니다.

grep마지막 열의 값에 "apple"이라는 단어만 포함되기를 원합니다 . 어떻게 해야 합니까?

column1|column2|column3|column4|column5|column6|column7
aaaaaaa|bbbbbbb|ccccccc|ddddddd|eeeeeee|fffffff|apple

전체 줄을 Newfile.txt로 가져옵니다.

답변1

awk -F'|' '$NF == "apple" {print}'  sometextfile.txt  > Newfile.txt

필드 구분 기호를 사용하여 |각 줄에 대해 sometextfile.txt마지막 필드( $NF)가 "apple"과 같으면 전체 줄이 인쇄됩니다. 출력을 다음으로 리디렉션Newfile.txt

마지막 열이 아닌 특정 열을 테스트하려면 $nn이 열 번호인 경우를 사용하세요. 이 예에서 는 와 $NF동일하며 다음을 포함합니다 .$7$6fffffff

답변2

원래 문제는 grep해결책을 요구했습니다. 마지막 열을 찾으려면 [^|]+줄 끝까지 구분 기호 없이 단어를 검색하세요 $.

grep -Eo "[^|]+$" infile.txt

산출:

column7
apple

답변3

간단한 해결책은 표현식을 끝에 고정하는 것입니다 $.

grep "|apple$" sometextfile.txt > Newfile.txt

행을 찾을 수 없는 경우 일반적인 원인은 DOS 형식 텍스트 파일의 행 끝에 캐리지 리턴이 있기 때문입니다. 끝에 인쇄할 수 없는 문자를 허용하여 이 상황을 포착할 수 있습니다(정규식에서 지원한다고 가정 \s).

grep "|apple\s*$" sometextfile.txt > Newfile.txt

답변4

또 다른 awk방법:

awk -F\| '$NF ~ /^apple$/' infile.txt >toOutput.txt

관련 정보