Захватить весь текст между начальным разделителем строк и конечным разделителем символов

Вы можете использовать --word-diff, чтобы сжать строки +и -вместе с изменениями, выделенными красным/зеленым текстом, и полностью прекратить использование команды grep.

enter image description here

Вы можете комбинировать это с -U0, чтобы удалить весь контекст вокруг различий, если вы действительно хотите сжать его еще больше.

enter image description here

Этот подход лучше, чем использование grep, так как вы не теряете вывод, вы можете сказать, когда строка была добавлена ​​или просто изменена, и вы не полностью теряете удаления, но при этом сжимаете вывод в нечто легко читаемое..

Ответ на вопрос о egrep уже дан @Stephen Kitt здесь

0
18.12.2019, 04:14
3 ответа

вы можете просто grepвывести данные, хочу:

$ grep -oP '\[protein=\K((?!]).)+(?=])' file
0
28.01.2020, 03:00

Простым sedрешением является

 sed 's/\[protein=\(.*\)]/\1/'

Если каждая строка вашего ввода выглядит как [protein=something], тогда приведенная выше команда должна работать нормально. Если у вас есть другие данные, и вам не нравятся результаты что вы получаете из вышеперечисленного, вам нужно будет указать, что вы действительно хотите.

0
28.01.2020, 03:00

Общее решение, когда теги могут содержать любой текст, заключается в использовании следующей команды sed:

sed -i.bak 's/\[[^=]*=\([^]]*\)]/\1/g' <file to process>

Эта команда будет работать с [tagname=something]и удалит [tagname=и ], где тэг может быть любым, а не только protein.

-i.bakобработает ваш файл и поместит исходный файл в имя файла с расширением .bak.

0
28.01.2020, 03:00

Теги

Похожие вопросы