두 개의 열을 추출하여 이미 열로 가득 찬 다른 파일의 특정 위치에 추가하려는 파일이 있습니다.
cat 파일 1을 변수로 만든 다음 cat 파일 2를 변수로 만든 다음 변수를 내보내기 및 awk와 결합할 수 있나요? 이전에 누군가가 이런 식으로 한 줄의 텍스트를 작성하는 데 도움을 주었지만 전체 파일에 대해 작동하는지 여부는 알 수 없습니다.
예:
입력 파일 1
Group F3D0 F3D1 F3D9 F3D
Otu01 1627 1935 8335 241
입력 파일 2
oi1 oi2
lk8 po8
결과물 파일
oi1 oi2 Group F3D0 F3D1 F3D9 F3D
lk8 po8 Otu01 1627 1935 8335 241
답변1
당신이 보여준 경우에 정말로 필요한 것은
paste -d ' ' file2 file1
처음 두 열, 두 번째 열, 나머지, 마지막으로 첫 번째 열을 출력하는 등 순서대로 및 일부 쉘 프로세스 대체를 사용하여 원하는 거의 모든 작업을 수행 cut
할 수 있습니다 .paste
file1
file2
file1
file2
paste -d ' ' <(cut -d ' ' -f 1,2 file1) <(cut -d ' ' -f 2 file2) <(cut -d ' ' -f 3- file1) <(cut -d ' ' -f 1 file2)
또는 (아마도 더 효율적일 수 있음) 두 파일을 있는 그대로 붙여넣고 결과를 파이프하여 awk
특정 순서로 특정 열을 선택할 수 있습니다.
paste -d ' ' file1 file2 | awk '{print $1, $2, $NF, $3, $4, $5, $(NF-1)}'
또는 (원하는 경우)perl
paste -d ' ' file1 file2 |
perl -alne 'print join " ", @F[0,1],@F[6],@F[2..4],@F[5]'