행의 특정 열에 있는 파일의 특정 단어를 Grep합니다.

행의 특정 열에 있는 파일의 특정 단어를 Grep합니다.

열에 특정 숫자가 포함된 파일이 있는데 다른 파일에서 해당 숫자가 포함된 열 3의 행을 추출하려고 합니다.

예를 들어 다음과 같습니다 extract.file.

123
689
456

input.file~와 함께

1 AB 123 home 123
1 AC 568 cat 568
1 BC 689 dog 123
1 BB 456 car 456

다음만 포함된 결과 파일을 원합니다.

1 AB 123 home 
1 BC 689 dog
1 BB 456 car

나는 사용했다

grep -wF -f extract.file input.file > output.file

그러나 여기에는 마지막 열도 포함됩니다.

1 BC 689 dog 123

그러면 어떻게 열 3에서만 검색하고 출력에서 ​​마지막 열을 제외할 수 있습니까?

답변1

일방 통행:

awk 'NR==FNR{a[$1];next}($3 in a){$NF="";print;}' extract.file input.file

마지막 열을 제거하지 않고 전체 행을 얻으려면 다음을 수행하십시오.

awk 'NR==FNR{a[$1];next}($3 in a)' extract.file input.file

답변2

패턴 파일에 정규식을 사용합니다.

[0-9]\+ [A-Z]\+ 123
[0-9]\+ [A-Z]\+ 689
[0-9]\+ [A-Z]\+ 456


grep -f   extract.file input.file
1 AB 123 home 123
1 BC 689 dog 123
1 BB 456 car 456

답변3

당신이 사용할 수있는 cut:

grep -wF -f extract.file input.file | cut -d" "  -f1,2,3,4  >  output.file

관련 정보