我有多个文本文件,我希望从这些文件中提取特定列并将它们保存到 *_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