숫자를 비교하고 세부 정보를 수집하여 새 파일에 출력을 제공합니다.

숫자를 비교하고 세부 정보를 수집하여 새 파일에 출력을 제공합니다.

파일 1아래와 같이 많은 숫자가 포함되어 있습니다.

345656565465
783329439432
345656565465
783329439432
.......

파일 2:

345656565465;ram;dfdfdf54532fdf;...............................
783329439432;sam;dfsdgg543546fg;...............................
768737228732;bheem;dfsdg5465464767g;...........................
34565656546575;hema;jsdsds45345455h;..........................

원하는 출력:파일 1지도를 검색해야 합니다파일 2그리고 넣어파일 3(출력) 다음과 같습니다.

345656565465;ram;dfdfdf54532fdf;...............................
783329439432;sam;dfsdgg543546fg;...............................

지금까지 나는 다음을 시도했습니다.

$ awk -F'|' 'NR==FNR{c[$1$2]++;next};c[$1$2] > 0' file2 file1

또한 Perl을 사용해 보았지만 원하는 출력을 제공하지 않기 때문에 이것이 올바른지 확실하지 않습니다.

perl -e 'open(A, "file2"); while(<A>){/.+?\|[^|]+/ && $k{$&}++};
while(<>){/.+?\|[^|]+/ && do{print if defined($k{$&})}}' file1

내가 직면한 문제는 숫자만 grep해야 하지만 내 코드에서는 동일한 패턴이 포함된 큰 숫자를 가져와 세 번째 파일에 붙여넣어야 한다는 것입니다. 내가 이것을 달성하도록 도와주세요 :)

답변1

당신은 거의 성공했습니다

awk -F';' 'NR==FNR{c[$1]++;next ;} c[$1] > 0' file1 file2

어디

  • -F';'파이프 대신 세미콜론을 구분 기호로 사용합니다.
  • 첫 번째 것을 사용하여 file1번호를 캡처하세요.
  • 첫 번째 열을 선택하고 싶다고 생각합니다.

관련 정보