我必须从制表符分隔的文件的第6列中提取大于或等于0.01的值(我的文件包含6列以上)。我尝试了以下代码
for i in $(find ./ `pwd` -name "BC_4_*_*shift.txt" ); do
awk -F"\t" 'NR==1 || $6>=0.01' $i > $i"_"ctdna_freq.txt;
done
编写这段代码,我得到了帮助,所有行的列值都大于阈值,使用此代码,我可以从第6列中提取大于0.01的值,但无法提取等于以下是我的输入文件0.01
chr pos ref var p.val freq.var
chr19 9074573 A C 6.73E-22 0.586593469
chr19 9091288 G T 5.96E-188 0.508732726
chr8 124518636 C T 9.55E-21 0.00005
chr12 56490398 G T 0.005271732 0.010003218
chr12 56477619 G A 1.40E-15 0.010001069
chr12 56477619 G A 1.40E-15 0.010001069
chr3 52677261 C T 5.13E-06 0.01
chr5 67591010 A G 4.82E-23 0.01
预期产量
chr pos ref var p.val freq.var
chr19 9074573 A C 6.73E-22 0.586593469
chr19 9091288 G T 5.96E-188 0.508732726
chr12 56490398 G T 0.005271732 0.010003218
chr12 56477619 G A 1.40E-15 0.010001069
chr12 56477619 G A 1.40E-15 0.010001069
chr3 52677261 C T 5.13E-06 0.01
chr5 67591010 A G 4.82E-23 0.01
#!/usr/bin/env bash
while IFS= read -r i; do
awk -F'\t' 'NR==1 || $6>=0.01' "$i" > "${i}_ctdna_freq.txt"
done < <(find . -name 'BC_4_*_*shift.txt')
或者:
#!/usr/bin/env bash
find . -name 'BC_4_*_*shift.txt' |
xargs -n 1 -I {} awk -F'\t' 'NR==1 || $6>=0.01' "{}" > "{}_ctdna_freq.txt"
不要这样做for i in ...
,请参阅https://mywiki.wooledge.org/BashFAQ/001,并且请务必始终引用您的变量,请参阅https://mywiki.wooledge.org/Quotes。通过http://shellcheck.net运行所有的Shell脚本,直到您熟悉基础知识为止。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句