두 개의 파일 열 병합

두 개의 파일 열 병합

File1의 마지막 필드에 File2의 6개 필드를 추가하고 싶습니다. 다음 명령을 사용하고 있지만 출력을 얻을 수 없습니다.

awk 'FNR==NR{a[$1]=$6; next} {print $0,a[$1]}' File2 File1

파일 1:

zehriscollection.co.uk,IPAddress,hqfmqxvm,[email protected],2015-06-06 16:34,home,8000,4,Professional Linux Based,paper_lantern,root,Hostname,1433590496,4212,8192000
zindagidesire.com,IPAddress,hgchcjhcj,[email protected],2015-08-19 18:16,home,8000,107,Professional Linux Based,paper_lantern,root,Hostname,1439990214,110126,8192000
zobasra.co.uk,IPAddress,egranius,"[email protected], [email protected]",2013-11-30 19:07,home,3072,4,Standard,x3,root,Hostname,1385820470,4208,3145728

파일 2:

zehriscollection.co.uk        hqfmqxvm         Usage:  4.02M      Inodes:  275
zindagidesire.com             hgchcjhcj        Usage:  107.19M    Inodes:  4765
zobasra.co.uk                 egranius         Usage:  4.02M      Inodes:  390

내가 원하는 것:

zehriscollection.co.uk,IPAddress,hqfmqxvm,[email protected],2015-06-06 16:34,home,8000,4,Professional Linux Based,paper_lantern,root,Hostname,1433590496,4212,8192000,275
zindagidesire.com,IPAddress,hgchcjhcj,[email protected],2015-08-19 18:16,home,8000,107,Professional Linux Based,paper_lantern,root,Hostname,1439990214,110126,8192000,4765
zobasra.co.uk,IPAddress,egranius,"[email protected], [email protected]",2013-11-30 19:07,home,3072,4,Standard,x3,root,Hostname,1385820470,4208,3145728,390

답변1

이 작업을 수행합니다.

awk '{print $6}' File2 | paste -d ',' File1 -

마지막은 -awk에서 파이프로 전달되는 표준 입력입니다.

편집: 파일의 도메인 이름이 일치하는지 확인해야 할 join경우 paste.

예를 들어:

sort File2 | awk '{print $1,",",$6}' | sed 's/ //g' | join -t ',' File1 -

답변2

이 기능을 사용하는 한 가지 방법은 다음과 같습니다 split.

awk 'FNR==NR{a[$1]=$6; next}
{split($0, b, ","); u=b[1]; if (u in a) {$0=$0","a[u]}}
1' file2 file1

각 행의 6번째 필드를 저장하고 쉼표로 file2구분하여 배열로 a[1st field]지정한 다음 첫 번째 요소를 에 할당합니다 . 안에 있으면 줄 뒤에 쉼표를 추가하세요. 마지막으로 각 줄이 수정되었는지 여부를 인쇄합니다.file1bb[1]uuaa[u]1file1

관련 정보