2014-06-18 4 views
0

두 개의 입력 파일이 있습니다.두 파일을 비교하고 결합하십시오 (쉘 스크립트)

file1과 file2를 비교하고 첫 번째 필드가 인 두 파일 모두에 동일한 행을 결합해야합니다. 나머지 줄은 무시할 수 있습니다.

이상적으로는 출력 파일의 필드를 파이프로 구분하고 싶습니다.

나는 간단한 쉘 스크립트만으로도 충분하다고 생각합니다.

파일 2

0001|14 
9934|3 
4555|33 

파일 1

0001|coffee|grocery store 
0003|gasoline 
0005|pickup sticks 
9934|protein bars 
4555|car 

원하는 출력 : 어떤 도움을 크게 감상 할 수

파일 3

0001|14|0001|coffee|grocery store 
9934|protein bars 
4555|33|4555|car 

.

+0

원하는 출력과는 일치하지 않습니다. 첫 번째와 세 번째 줄에는 "키"열이 다시 포함되며 두 파일의 모든 추가 열이 포함됩니다. 두 번째는 key2와 file2의 추가 열만 포함합니다. 솔루션에서 두 패턴 중 어느 패턴을 따라야할까요? – twalberg

답변

0

사용 AWK는 :

awk 'BEGIN{FS=OFS="|"} FNR==NR {a[$1]=$0; next} $1 in a {print a[$1], $0}' f1 f2 
0001|14|0001|coffee|grocery store 
9934|3|9934|protein bars 
4555|33|4555|car 
+0

빠른 응답을 보내 주셔서 감사합니다. 이 명령을 시도하고 다음 오류가 발생했습니다 : awk : 1 행 근처에 구문 오류가 있습니다. awk : 1 행 근처에서 오류가 발생했습니다. – user3486154

+0

이것은 BSD 및 gnu awk에서 테스트되었습니다. 수 awk 버전을 확인하고 알려주십시오 – anubhava

+0

나는 어떻게 확인 해야할지 잘 모르겠다. 나는/usr/bin/awk 및 what/bin/awk를 실행했는데 SunOS 5.10을 반환했다. 일반 127884-01 Oct 2007 – user3486154

관련 문제