awk는 여러 입력 파일에서 여러 출력 파일로 일괄 인쇄합니다.

awk는 여러 입력 파일에서 여러 출력 파일로 일괄 인쇄합니다.

특정 열을 추출하여 *_2.txt 파일에 저장하려는 텍스트 파일이 여러 개 있습니다.

awk '{print $(NF-3), $5}' *.txt > *_2.txt 

하지만 이 명령은 작동하지 않습니다. awk를 사용하여 일괄 열 추출을 구현하는 방법은 무엇입니까?

입력하다:

a.txt
aaa bbb ccc          109.6136     93.1900      1.0000    269.7332  35703.1790
ddd eee fff            48.8760     34.2100      1.0000    215.0926  35918.2717
ggg hhh iii                     17.3588    -65.4900      0.7000  14008.0228  49926.2945
...

b.txt 
qq ss rr         105     71.6239     68.1500      3.0000      1.3408   4329.5373
aa bb nn         110    271.3443    231.4200     10.0000     15.9395   4345.4768
rr uu ii         115    338.2163    415.6700     25.0000      9.5985   4355.0753
zz xx yy         120    536.0957    584.7900     50.0000      0.9485   4356.0238
...

목표 출력:

a_2.txt
109.6136     93.1900      1.0000
 48.8760     34.2100      1.0000
 17.3588    -65.4900      0.7000
...

b_2.txt
105     71.6239     68.1500
110    271.3443    231.4200
115    338.2163    415.6700
120    536.0957    584.7900
...

각 텍스트 파일에서 특정 열을 추출하여 이름에 _2를 추가하여 각 텍스트 파일에 저장하고 싶습니다. 대상 열은 $(NF-5), $(NF-4), $(NF-3)입니다.

답변1

다음과 같이 AWK 스크립트에서 이 작업을 수행해야 합니다.

awk 'FNR == 1 { sub(/\.txt$/, "_2.txt", FILENAME) }  { print $(NF-3), $5 > FILENAME }' *.txt

관련 정보