Как заставить Ack остановиться после первого матча? - PullRequest
0 голосов
/ 22 мая 2019

Я пытаюсь найти шаблоны в файле. Выглядит так:

aaa;
bbb;

Если я попробую следующее, оно не остановится:

cat test | tr -d '\n' | ack -1 'aa.*;'
aaa;bbb;

Есть ли способ остановиться с aaa;?

Ответы [ 2 ]

1 голос
/ 27 июня 2019

Ваше регулярное выражение жадный , поэтому он включает весь текст после второй a до последней точки с запятой. Если вы уточните шаблон, чтобы НЕ быть жадным (со знаком вопроса), и используете опцию -o, вы получите то, что ожидаете:

$cat test.txt | tr -d '\n' | ack -o 'aa.*?;' 
aaa;

Подробнее рецепты / подробности здесь

0 голосов
/ 23 мая 2019

Это делает трюк:

 ack -1 -io 'a[^;]+;'
...