Linux下同時對字母和數(shù)字排序

最近在用Variation graph toolkit(簡稱vg,一款構(gòu)建泛基因組,并用構(gòu)建好的泛基因組來call變異的軟件),想cat兩個vcf文件并根據(jù)染色體號(CHROM)和起始位置(POS)進行排序,也即:

cat $vcf1 $vcf2 |sort -k 1n -k 2n >$vcf

但是結(jié)果會是X和Y在最前面,

# ...為省略內(nèi)容
#CHROM  POS  ......
X  1979  ......
X  19469  ......
......

而我希望的順序是1-22,然后是X和Y。
在網(wǎng)上查了一下,沒找到sort可以用的參數(shù),然后想用awk去做,最開始是

for i in `seq 1 22` X Y;do awk '{if($1 == '$i')print $0}' $vcf ;done >$sorted_vcf

這里有個小Tips:
要想在awk中引用for循環(huán)的變量,需要在變量$i兩邊加上單引號,即

# ...為省略內(nèi)容
for i in ... ; do awk '...'$i'...' ;done

但是tail了一下,發(fā)現(xiàn)沒有抓到X和Y,猜測是字符串和數(shù)字的原因。

最后用如下代碼成功實現(xiàn):

for i in `seq 1 22` X Y;do awk '{if($1 == "'$i'")print $0}' $vcf ;done >$sorted_vcf

注意,sort這步依然是需要做的。

如果有更好的方法,還請告訴我哦。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)載 原文的排版和內(nèi)容都更加友好,并且詳細,我只是在這里貼出了一部分留作自己以后參考和學習,如希望更詳細了解AWK...
    XKirk閱讀 3,367評論 2 25
  • SwiftDay011.MySwiftimport UIKitprintln("Hello Swift!")var...
    smile麗語閱讀 4,102評論 0 6
  • 尋找trio家系新發(fā)突變位點 http://wintervar.wglab.org/錯義突變評估網(wǎng)站突變reads...
    Hocchan_7閱讀 4,343評論 0 51
  • 系統(tǒng)巡檢腳本:Version 2016.08.09 ############################ 系統(tǒng)...
    NamasAmitabha閱讀 1,466評論 0 0
  • 1、Nginx日志分析日志格式:'$remote_addr - $remote_user [$time_local...
    運維前線閱讀 862評論 0 4

友情鏈接更多精彩內(nèi)容