파일이 두 개 있어요
파일 1.txt
a|1|cd
a|2|cd
a|4|cd
파일 2.txt
a|0001|hj|df
a|0002|ed|nb
a|0003|vf|za
a|0004|er|ns
a|0005|oi|lk
파일의 두 번째 열과 일치하는 행이 포함된 새 파일을 만들려면 파일이 필요합니다. 다음 코드를 시도해 보겠습니다.
awk -F"|" 'NR==FNR{a[$2]++;next} a[$2] ' file1.txt file2.txt
하지만 두 번째 열의 file1.txt 왼쪽에 0이 포함되어 있지 않기 때문에 레코드를 찾을 수 없습니다.
awk -F"|" 'NR==FNR{a[$(printf("%09d\n", $2))]++;next} a[$2]'
하지만 작동하지 않습니다.
결과는 다음과 같아야 합니다.
파일 3.txt
a|0001|hj|df
a|0002|ed|nb
a|0004|er|ns
답변1
필드에 0을 추가하면 awk는 이를 문자열이 아닌 숫자로 처리하게 됩니다.
$ awk -F"|" 'NR==FNR{a[$2+0]++;next} a[$2+0] ' file1.txt file2.txt
a|0001|hj|df
a|0002|ed|nb
a|0004|er|ns
0001
문자열은 와 다르기 때문에 1
각 값에 0을 추가하여 숫자로 변환하여 원하는 비교를 생성합니다.