Я использую grep для извлечения частей из файла, но у меня возникают проблемы с его корректной работой.Из строки
something0( something1
Я хочу извлечь что-то0.Это отлично работает на некоторых входных данных,
echo 'a b( c d' | grep -Po '(?m)^.+?(?=\(.+)' #outputs 'a b'
Но не очень хорошо на других входных данных,
echo 'a b( )c d( e f' | grep -Po '(?m)^.+?(?=\(.+)' #outputs 'a b' and '( ) c d'
Как я могу заставить grep возвращать только первое совпадение или улучшать мое регулярное выражение?Передача вывода greps в
head -n 1
не является альтернативой, поскольку grep будет читать весь файл с этими строками, и если я не ошибаюсь в этом, он выведет только первое совпадение в файле.Ладно предположить, что что-то 0 не содержит никаких '('.
Спасибо.
-P