여기 내가 달성하려는 작업의 예가 있습니다.
파일 1 :
Adam
John
Tim
파일 2 :
,2018-2-1301
,2018-3-1379
,2018-1-3809
,2018-2-5801
산출:
Adam,2018-2-1301
Adam,2018-3-1379
Adam,2018-1-3809
Adam,2018-2-5801
John,2018-2-1301
John,2018-3-1379
John,2018-1-3809
John,2018-2-5801
Tim,2018-2-1301
Tim,2018-3-1379
Tim,2018-1-3809
Tim,2018-2-5801
감사!
$ awk 'NR == FNR { names[$1]; next }
{ for (name in names) printf("%s%s\n", name, $0) }' file1 file2
Adam,2018-2-1301
Tim,2018-2-1301
John,2018-2-1301
Adam,2018-3-1379
Tim,2018-3-1379
John,2018-3-1379
Adam,2018-1-3809
Tim,2018-1-3809
John,2018-1-3809
Adam,2018-2-5801
Tim,2018-2-5801
John,2018-2-5801
이것은 awk
첫 번째 파일 (세 개의 이름을 가진 파일)을 연관 배열 (키로)으로 읽는 데 사용 됩니다. 두 번째 파일을 읽을 때 두 번째 파일의 각 줄은 이전에 읽은 각 이름과 함께 반복적으로 출력됩니다.
NR == FNR
우리가 첫 번째 파일에서 읽고 있다면 테스트는 사실이다. 현재 파일의 레코드 번호로 전체 레코드 번호 ( "줄 번호")를 테스트합니다.
다음 과 같이 GNU 와 교차 조인 할 수도 있습니다 join
.
$ join -j 99 -o1.1,2.1 file[12]
Adam ,2018-2-1301
Adam ,2018-3-1379
Adam ,2018-1-3809
Adam ,2018-2-5801
John ,2018-2-1301
John ,2018-3-1379
John ,2018-1-3809
John ,2018-2-5801
Tim ,2018-2-1301
Tim ,2018-3-1379
Tim ,2018-1-3809
Tim ,2018-2-5801
... 어디에 99
두 파일에 존재하지 않는 필드가 있습니다.
이 예에서 삽입 된 공간은를 통해 결과를 파이프하여 제거 할 수 있습니다 tr -d ' '
.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다