awk를 사용하여 별도의 파일에서 열 데이터 선택

awk를 사용하여 별도의 파일에서 열 데이터 선택

저는 숙련된 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_IN1file1 LEV_IN2은 file2입니다.

내가 뭘 잘못했나요?

답변1

먼저 파일 이름을 순서대로 지정하면 file1의 모든 열을 계산한 다음 다음 숫자부터 file2까지 계산을 시작합니다. 이는 file1의 2개 열과 file2의 시작 열 3,4,5...등을 계산한다는 의미입니다.

$6file2의 열 4를 얻으려면 명령이 file2에서 3부터 계산되기 시작하므로 작성해야 합니다 .

그러면 원하는 출력이 제공됩니다( $6file2의 다른 열을 인쇄하려면 다른 숫자로 변경하십시오).

paste file1 file2 | awk '{print $2 " " $6}' > outputfile.txt

다른 방법(여기서는 $4file2의 열 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

관련 정보