我正在尝试通过 awk 读取两个单独的文件并将第二个文件解析为输出文件。
file1 包含数字:
1
2
5
7
10
file2 包含标题(字段数 <3)和列中的数据值(25 列)
_rlnNrOfSignificantSamples #24
_rlnMaxValueProbDistribution #25
300.000000 25425.970703 25000.669922 6.050000 2.000000 56.000000 0.277790 79096.000000 0.100000 000001@Particles/Micrographs/006_particles.mrcs 453.000000 604.000000 1.000000 0.859382 Micrographs/006.mrc 1 -3.469177 -3.469177 0.000000 0.000000 -82.345885 23 9475.876495 1 0.988689
300.000000 25425.970703 25000.669922 6.050000 2.000000 56.000000 0.277790 79096.000000 0.100000 000002@Particles/Micrographs/006_particles.mrcs 431.000000 428.000000 1.000000 0.806442 Micrographs/006.mrc 1 -1.469177 -3.469177 0.000000 0.000000 87.654115 22 9412.959278 1 1.000000
我想将 file1 中的数字读入数组,然后:
- 从file2打印标题
- 如果字段 $22 中的值不在数组中,则从 file2 打印行(在前面的示例中,其值为 23 和 22)
经过一天的挣扎,我想出了以下几点:
#!/bin/bash
FieldNum=22
awk -v f=$FieldNum 'FNR==NR{num[$1]; next}
{
# print the header of file2
if(NF < 3) {print > "output"}
# check lines after header
else {if (f in num) {} else {print >> "output"}}
}' $file1 $file2
但结果是打印了 file2 中的所有行,因此数组检查不起作用。你能找出我的错误吗?