Другой ответ, использующий sed
, должен работать, но я всегда нахожу sed
немного неуклюжим для выбора регулярных выражений, поскольку он действительно предназначен для замены (следовательно, почему любая сторона шаблона должна быть окружена .*
а та часть, которую вы на самом деле хотите, должна быть в скобках).Вот решение, использующее grep
:
grep -Po '\|X\K[^|]+'
-P
сигналов grep
для использования механизма регулярных выражений Perl, который является более продвинутым
-o
только для печатисоответствующая часть строки
\|X
совпадает с буквенной вертикальной чертой и заглавной буквой X
\K
забыть, что было найдено в данный момент (не включайте его в окончательный вывод)
[^|]+
один или несколько символов, кроме вертикальных черт