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

相关内容