나는 이 파일들을 가지고 있습니다.
파일 1.txt
A
B
C
D
E
파일 2.txt
A 1
B 2
D 3
내가 원하는 출력은 다음과 같습니다.
A
B
D
사용해봤지만 grep -Ff file1.txt file2.txt
결과는
A 1
B 2
D 3
답변1
위치 join
:
join -o 1.1 f1.txt f2.txt
기본적으로 join
파일의 공백으로 구분된 첫 번째 필드가 연결됩니다. -o 1.1
출력을 지정하면 첫 번째 파일의 첫 번째 필드에만 관심이 있습니다.
sort
파일이 정렬되지 않은 경우 먼저 파일을 정렬 해야 합니다 .
join -o 1.1 <(sort f1.txt) <(sort f2.txt)
예:
$ cat f1.txt
A
B
C
D
E
$ cat f2.txt
A 1
B 2
D 3
$ join -o 1.1 f1.txt f2.txt
A
B
D
답변2
join
이보다 훨씬 쉽지만 를 사용하여 시도해 볼 수도 있습니다 awk
.
awk 'NR==FNR{a[$1]=$1}NR!=FNR && $1 in a{print a[$1]}' file1.txt file2.txt
데모
$ cat file1.txt
A
B
C
D
E
$ cat file2.txt
A 1
B 2
D 3
$ awk 'NR==FNR{a[$1]=$1}NR!=FNR && $1 in a{print a[$1]}' file1.txt file2.txt
A
B
D