我正在过滤下表:
1 12907284 EXON 0.4337370362636598|0.3641439953194638
1 22329062 INTRON 0.49293080505655357|0.49301629531094115
1 22332332 INTRON 0.016239257239498844|0.016134012660182183
1 24201919 EXON 0.6183022425084342|0.6181532611391254
这个想法是用定界符$4
分隔列|
,获取第一个子字符串并检查条件,如果是,则将打印整个表。为此,我正在应用此awk
命令,但由于它无法正常工作,出现了一些问题:
awk 'BEGIN{FS=OFS="\t"} split($4, a, "\\|"); a[1] < 0.01 {print}' file.tsv
请提出任何建议/更正?谢谢!
答案 0 :(得分:2)
如果您输入的内容在示例中没有接受|
,则可以使用正则表达式作为字段分隔符,将当前第4个字段的两个不同部分解析为两个不同的字段:
awk -F'[\t|]' '$4 < 0.1 { print }'
答案 1 :(得分:1)
您的示例Input_file看起来似乎没有用TAB分隔,因此我将其设为[[:space]]+
,如果您的实际Input_file是用TAB分隔的,则可以将-F
的值更改为\t
awk -F'[[:space:]]+' '{split($4,array,"|");if(array[1]<0.01){print}}' Input_file
答案 2 :(得分:1)
awk '{split($4,a,/\|/)} a[1] < 0.01' file.tsv