저는 숙련된 Linux 사용자가 아닙니다. 2개의 개별 파일에서 열 데이터를 선택하고 awk를 사용하여 세 번째 파일에 쓰려고 합니다. 파일을 함께 붙여넣어 보았습니다. 즉, file1, file2를 붙여넣은 다음 awk를 붙여넣었지만 데이터가 다음 줄에 추가됩니다(교대로).
데이터는 다음과 같습니다:
파일 1
HZ880 0.00
HAM86 1.13
HAM40 1.60
파일 2
HZ880 -31.816826 115.757963 35.8909 0.0170 -.0170
HAM86 -31.824923 115.761507 33.6108 0.0165 -.0165
HAM40 -31.828528 115.762380 38.8434 0.0163 -.0163
컬럼2(파일1)과 컬럼4(파일2)를 사용하여 새 파일을 만드는 방법은 무엇입니까?
나는 다음을 시도했습니다 :
paste ${LEV_IN1} ${LEV_IN2} | awk '{print $2,$4}' > ${TEMP2}
여기서 LEV_IN1
file1 LEV_IN2
은 file2입니다.
내가 뭘 잘못했나요?
답변1
먼저 파일 이름을 순서대로 지정하면 file1의 모든 열을 계산한 다음 다음 숫자부터 file2까지 계산을 시작합니다. 이는 file1의 2개 열과 file2의 시작 열 3,4,5...등을 계산한다는 의미입니다.
$6
file2의 열 4를 얻으려면 명령이 file2에서 3부터 계산되기 시작하므로 작성해야 합니다 .
그러면 원하는 출력이 제공됩니다( $6
file2의 다른 열을 인쇄하려면 다른 숫자로 변경하십시오).
paste file1 file2 | awk '{print $2 " " $6}' > outputfile.txt
다른 방법(여기서는 $4
file2의 열 4 참조):
paste <(awk '{print $2}' file1) <(awk '{print $4}' file2) > outputfile.txt
산출:
0.00 35.8909
1.13 33.6108
1.60 38.8434
순수한 awk
솔루션은 다음과 같습니다.
awk 'NR==FNR{a[NR]=$2; next} {print a[FNR], $4}' file1 file2 > outputfile.txt
답변2
awk
작업에 필요하지 않음
join --nocheck-order -o 1.2,2.4 file1 file2
또는
paste file1 file2 | tr -s ' ' '\t' | cut -f2,6