我试图让它以逗号分隔的形式输出。当前版本根本不起作用(我得到一个空白文件作为输出),而以前的版本(我保留 awk BEGIN 语句但没有排序分隔符)只会以制表符分隔而不是逗号分隔输出. 在以前的版本中,在不尝试获取逗号分隔符的情况下,我确实得到了预期的答案(使用复杂的过滤器等),所以我不寻求这部分的帮助。我意识到这是一种非常丑陋的过滤方式,而且数字也很丑陋/非常大。
问题背景:在文件 lamina.bed 中找到与区域 chr12:5000000-6000000 重叠的区域,并按第 4 列降序排序,输出为逗号分隔。染色体是第一列,区域的起始位置是第 2 列,结束位置是第 3 列,值是第 4 列。我们应该使用 awk(在 Unix bash shell 中)。预先感谢您的帮助!
awk 'BEGIN{FS="\t"; OFS=","} ($2 <= 5000000 && $3 >= 5000000) || ($2 >= 5000000 && $3 <= 6000000) || ($2 <= 6000000 && $3 >= 6000000) || ($2 <= 5000000 && $3 >= 6000000)' /vol1/opt/data/lamina.bed | awk 'BEGIN{FS=","; OFS=","} ($1 == "chr12") ' | sort -t$"," -k4rn > ~/MOLB7621/PS_2/results/2015_02_05/PS2_p3_n1.csv
cat ~/MOLB7621/PS_2/results/2015_02_05/PS2_p3_n1.csv
输入示例行(制表符分隔,包括 chr12 上应该工作的行):
#chrom start end value
chr1 11323785 11617177 0.86217008797654
chr1 12645605 13926923 0.934891485809683
chr1 14750216 15119039 0.945945945945946
chr12 3306736 5048326 0.913561847988077
chr12 5294045 5393088 0.923076923076923
chr12 5505370 6006665 0.791318864774624
chr12 7214638 7827375 0.8562874251497
chr12 8139885 10173149 0.884353741496599