sed: удалить символы после соответствующих N-ых символов - PullRequest
0 голосов
/ 13 марта 2019

Я хотел бы упростить свою базу данных, удалив нежелательную информацию, однако не могу найти способы сделать это. Вот пример моего файла. В 6-м столбце я хотел бы удалить все символы до и после BPSS. Номер, который связан с до и после BPSS, должен быть сохранен. Пример таблицы

bactNOG ENOG410884P     2       2       M       379066.GAU_3228,272560.BPSS2320
bactNOG ENOG4108K54     20      20      S       240016.VspiD_010100004855,530564.Psta_1282,349741.Amuc_1603,272560.BPSS1860,761193.Runsl_3432,320771.Cflav_PD6017 
bactNOG ENOG4108PSW     33      31      E       1048834.TC41_0741,749927.AMED_4235,272560.BPSS0750,479433.Caci_2010,521098.Aaci_0763,220664.PFL_3212,208964.PA1485
bactNOG ENOG4108Q8E     10      9       G       272568.Gdia_0844,349163.Acry_2602,366394.Smed_0916,266834.SMc02021,266835.mll7376,457421.CBFG_05672,272560.BPSS2071

Я хотел бы упростить таблицу в этом

bactNOG ENOG410884P     2       2       M       272560.BPSS2320
bactNOG ENOG4108K54     20      20      S       272560.BPSS1860
bactNOG ENOG4108PSW     33      31      E       272560.BPSS0750
bactNOG ENOG4108Q8E     10      9       G       272560.BPSS2071

Я знаю несколько команд в sed, но эти команды не могут мне помочь. Я попробовал Sed команду, как это

sed 's/BPSS[0-9][0-9][0-9][0-9].*/BPSS[0-9][0-9][0-9][0-9]/g' file

Но цифры после BPSS были изменены. Я хочу сохранить (BPSS) номера.

Заранее спасибо

Камаль

1 Ответ

1 голос
/ 13 марта 2019
$ sed 's/[^[:space:]]*,\([0-9]*\.BPSS[0-9]*\).*/\1/' file
bactNOG ENOG410884P     2       2       M       272560.BPSS2320
bactNOG ENOG4108K54     20      20      S       272560.BPSS1860
bactNOG ENOG4108PSW     33      31      E       272560.BPSS0750
bactNOG ENOG4108Q8E     10      9       G       272560.BPSS2071
...