[英]remove lines with sed and regexp
我有一个看起来像这样的文件:
rs994321 - chr6_ssto_hap7 712891 G A 0.011180599999999999 0.0058201 62357
rs994321 - chr6_mcf_hap5 675532 G A 0.011180599999999999 0.0058201 62357
rs994321 - chr6_mann_hap4 675338 G A 0.011180599999999999 0.0058201 62357
rs994321 - chr4_dbb_hap3 675681 G A 0.011180599999999999 0.0058201 62357
rs994321 - chr4_cox_hap2 891136 G A 0.011180599999999999 0.0058201 62357
rs994321 - chr6 29372356 G A 0.011180599999999999 0.0058201 62357
rs9943219 + chr1 238691947 A G 0.00700761 0.00727069 62357
rs9943217 + chr1 238691673 A G 0.00663929 0.00715566 62357
我想删除带有模式chr*_*_hap*
。 在我的示例中,仅应保留最后3行。 我尝试使用以下命令,但它们不起作用:
sed '/chr[0-9]_*_hap[0-9]/d' test.txt
sed '/*_hap[0-9]/d' test.txt
sed '/\*_hap[0-9]/d' test.txt
我用regexp不是很好
$ egrep -v '\bchr([^_]*_){2}hap[0-9]\b' data
rs994321 - chr6 29372356 G A 0.011180599999999999 0.0058201 62357
rs9943219 + chr1 238691947 A G 0.00700761 0.00727069 62357
rs9943217 + chr1 238691673 A G 0.00663929 0.00715566 62357
或使用sed
:
$ sed -r '/\bchr([^_]*_){2}hap[0-9]\b/d' data
rs994321 - chr6 29372356 G A 0.011180599999999999 0.0058201 62357
rs9943219 + chr1 238691947 A G 0.00700761 0.00727069 62357
rs9943217 + chr1 238691673 A G 0.00663929 0.00715566 62357
使用awk
:
$ awk '! /chr[^_]*_[^_]*_hap[0-9]/' data
rs994321 - chr6 29372356 G A 0.011180599999999999 0.0058201 62357
rs9943219 + chr1 238691947 A G 0.00700761 0.00727069 62357
rs9943217 + chr1 238691673 A G 0.00663929 0.00715566 62357
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.