1
У меня есть файл, который выглядит следующим образом:удалить строки с СЕПГ и регулярным выражением
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
Я не очень хорошо с использованием регулярного выражения
Полное и приятное :-) – sjsam
Полностью, согласен с @sjsam, огромное спасибо! – user2380782
'. *' S в конце REs ничего не делают, удаляют их. Аналогично удалите '{print}' из оператора awk. Регулярные выражения должны быть действительно «chr [^ _] * _ [^ _] * _ hap', чтобы быть более надежными, и это можно было бы свести к' chr ([^ _] * _) {2} hap' для краткости с большей команд. Обычно вы также должны добавлять привязки и/или идентифицировать определенное поле, но, вероятно, это нормально для этого формата ввода. –