我想提取特定列具有特定编号的行。文件如下。
ID Age
1 2
2 5
3 36
4 2
5 29
...
2000 84
我想根据第二列提取单独文件中的行。
for Num in {0..84}
do
awk '$2==${Num}' file > out_${Num}
done
上面的命令不起作用,但我想做类似的事情。有人可以帮我吗?
谢谢!
答案1
for num in {0..84}; do co=$(awk -v num="$num" '$2 == num {print $0}' file1|wc -l); if [[ $co > 0 ]]; then awk -v num="$num" '$2 == num {print $0}' file1 >out_$num;fi; done
测试时它适用于这种情况
答案2
你不需要跑wc
85次,也不需要awk
跑170次。除了和$2
之外还有什么限制吗?从内部重定向打印,尝试(无限制)$2 >= 0
$2 <= 84
awk
awk 'NR>1 {print > ("out_" $2)}' file
如果您的输出文件接近允许的最大打开文件数(linux:系统参数 OPEN_MAX),则需要在追加给他们。