구분 기호로 "|"가 포함된 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
마지막 열이 아닌 특정 열을 테스트하려면 $n
n이 열 번호인 경우를 사용하세요. 이 예에서 는 와 $NF
동일하며 다음을 포함합니다 .$7
$6
fffffff
답변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