Держите строку между началом и концом шаблона - PullRequest
0 голосов
/ 12 июня 2018

У меня есть текстовый файл, содержащий контент такого типа:

d__Affenpinscher|c__Abyssinian|h__Kathiawari|
a__Gold|y__Slix|c__Kathiawari|c__Cact

И я хотел бы получить все вхождения, которые начинаются с "c__" и заканчиваются на "|"итоговый результат:

c__Abyssinian
c__Cact

Я не так хорош с регулярными выражениями, поэтому спасибо за вашу помощь заранее.

edit: Я ищу команду bashпоэтому grep / sed / awk доступны, я попытался начать с базового примера, например:

sed -n "/<PRE>/,/<\/PRE>/p" input.html

с

и 
, начинающими и заканчивающими паттерн до
sed -n "/c__/,/|/p" breedList.txt > breedC.txt

Но я не получил желаемый результат

Редактировать 2: Я пытался адаптировать этот ответ из аналогичной темы Как использовать sed / grep для извлечения текста между двумя словами? но я, должно быть, что-то делаю не так, поскольку мой вывод просто пуст.

Вот команда, которую я попробовал:

echo "d__Affenpinscher|c__Abyssinian|h__Kathiawari|" | grep -o -P '(?<=c__).*?(?=|)'

1 Ответ

0 голосов
/ 13 июня 2018

Ответ от ркта добился цели, спасибо :):

echo "d__Affenpinscher|c__Abyssinian|h__Kathiawari|" | grep -o -P '(?<=c__).*?(?=\|)' The vertical bar | is a special character and needs to be escaped.

You say: start with "c__" and end with "|", but c__Cact doesn't end with |
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...