file2
알 수 없는 개수의 열이 포함된 두 번째 열을 에 추가하여 file1
이 열이 의 마지막 열이 되도록 하려고 합니다 file1
. 이를 위해 a 와 두 번째 열만 file3
붙여넣어 조합을 만들어 보았습니다 .file1
file2
file1
:
col11 col12 col13 ... col1n
file2
:
col21 col22 col23 ... col2m
새로운 file1
또는 file3
:
col11 col12 ... col1n col22
나는 다음 명령을 사용하고 있습니다 :
awk '{ print $0 > "file3"; getline<"file2"; print $2 > "file3" }' file1 &
그러나 col22에 대한 인수는 새 파일의 마지막 열을 형성하는 대신 래핑됩니다.
오류를 찾고 수정하거나 보다 효율적인 솔루션을 찾는 데 도움을 줄 수 있는 사람이 있습니까?
내 운영 체제는 fedora12입니다.
답변1
awk '{f1 = $0; getline<"file2"; print f1, $2}' < file1 > file3
출력 파일에는 동일한 수의 행이 있으므로 file1
마지막 행의 마지막 열이 더 짧으면 비어 있고, 더 길면 file2
마지막 값이 무시됩니다.file2
또는 Costas가 제안한 것처럼:
awk '{getline f1 <"file1" ; print f1,$2}' < file2 > file3
하지만 그때까지는 file3
행 수가 동일해집니다 file2
. 즉 file2
, 이보다 길면 열 순서가 영향을 받습니다 file1
.
그리고:
awk '{print $2}' < file2 | paste file1 - > file3
file3
file1
합계에서 가장 큰 행 수와 동일한 수의 행을 갖게 됩니다 file2
. 데이터는 삭제되지 않지만 위에서 언급한 것처럼 마지막 행이 . file2
보다 길면 file1
첫 번째/두 번째 열의 데이터가 포함됩니다 file3
.file2
답변2
노력하다
$ awk 'NR==FNR{a[NR]=$2;next}{print $0,a[FNR]}' file2 file1
col11 col12 col13 ... col1n col22
이 {a[NR]=$2;next}
부분은 목록의 첫 번째 파일( )에 대해서만 실행되며 , 두 번째 파일( )을 처리할 file2
때 전체 줄을 인쇄하고 두 번째 필드 값을 포함하는 테이블 요소를 추가합니다 .awk
file1
file1
a[FNR]
file2