Linux
子集文件以獲取正確的染色體
我有一個輸入文件,其中一些內容如下
chr1 12227 12612 chr1_ett 12721 13220 chr1 14829 14969 chr2 15038 15795 chr2_tdr 15947 16606 chr1 16765 16857 chr1 17055 17232 chr1 17368 17605 chr3 17742 17914 chr3_urr 18061 18267
我想刪除
"_"
第一列中有(下劃線)的那些行。所以基本上只保留 chr1,chr2,chr3 而不是 chr1_chr2_chr3_ 等染色體從 chr1 到 chr22 並具有 chrX chrY 和 chrM。我該怎麼做。
謝謝
嘗試
awk '$1 !~ /_/' input_file.txt > output.txt
這將選擇
$1
(第一列)不包含的所有行_
或者,根據 Glenn Jackmann 的建議
awk '! index($1,"_") ' input_file.txt > output.txt
另一種方式可能是
sed -i -e '/^chr[0-9]*_/d' file.txt
這將刪除同一行。(假設行完全以 開頭
chr
)
sed '/_/d' file
將刪除行中任何位置出現下劃線的所有行。
如果需要將結果保存回文件,使用
sed -i ...
要限制在第一列:
sed '/^[[:blank:]]*[^[:blank:]]\+_/d' file
即:在行首,可選前導空格,後跟非空格字元和下劃線。