У меня есть текстовый файл, содержащий контент такого типа:
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__).*?(?=|)'