Всем добрый день!
Я схожу с ума, пытаясь использовать sed
для замены шаблона строки. Я искал старые темы о sed
и экранировании специальных символов, но я все еще не могу это сделать. Я думаю, что мой разум сейчас слишком глубоко желает запутать проблему больше, чем это необходимо, чтобы найти легкий путь.
У меня есть документ .tsv
, в котором второй столбец представляет аннотации тегов, которые представлены в виде следующих возможностей:
B-something
B-something-something
B-something_something
B-something-something_something
I-something
I-something-something
I-something_something
I-something-something_something
Мне нужно заменить все B-*s на B, и то же самое с I-*s -> I.
Я знаю, что мог бы сделать это на Python, но мне нужно изучить sed
для быстрой предварительной обработки в будущем.
Я играл с regex101, и, похоже, работает следующий шаблон:
\b([BI]-[a-zA-Z_-]+)\b
Используя sed
, я мог захватить первую часть, то есть «B-first_character», используя: sed /s/\([BI]-[a-zA-Z]\)/replacing_word/g' input > output
Ничего не заменяется, когда я использую: sed /s/\([BI]-\)\([a-zA-Z_-]+\)/replacing_word/g'
Вероятно, последний кусок кода — это ужасная ошибка в моих ошибках, мой разум сейчас немного затуманен. Извините за тупую тему и всем спасибо.