У меня есть следующий текстовый файл:
a
a
Я пытаюсь сопоставить строки, начинающиеся с a
, используя следующую команду: pcregrep -M '^a'
. Соответствует только первому a
, а не второму. Кто-нибудь знает почему? Я использую pcregrep
, потому что это простая проблема, которую я расширю до более сложных сценариев позже.
Спасибо!
ОБНОВЛЕНИЕ
Причина в том, что я использую Mac OS, в которой каждая новая строка - это возврат каретки. Из-за этого pcregrep интерпретирует содержимое файла (который представляет собой \ ra) как одну строку, а мое регулярное выражение возвращает только первый a
из этой строки, поскольку это все, что я указал в выражении. Решением этой проблемы с помощью pcregrep является указание типа новой строки. «Тип новой строки» означает символ, который механизм Regex интерпретирует как обозначающий конец строки. Таким образом, если мы укажем в этом случае, что тип новой строки - возврат каретки (\ r), pcregrep будет интерпретировать содержимое моего файла как две строки, сопоставить и вернуть обе.
Фиксированная версия моего регулярного выражения - pcregrep -M -N CR '^a'
, где -N CR
означает «тип новой строки - возврат каретки».
\x0D
или\r
char. - person Wiktor Stribiżew   schedule 04.06.2019