2

Я пытаюсь получить все на совпавшей линии, исключая совпадение, используя grep.

Если у меня есть

#define VERSION 0.1

Команда должна повторить

0.1

Я видел этот вопрос, но я хочу, чтобы все было на одной линии.

Я прочитал справочную страницу, но не вижу ничего, соответствующего моему конкретному случаю использования. Может быть, другая команда будет лучше, чем grep для этого?

2 ответа2

2

Простой способ добиться этого - передать вывод grep в sed:

command | grep "^#define VERSION" | sed 's/^#define VERSION //'

Вы можете достичь того же результата, используя только sed, если вы используете ключ -n и шаблон p (то есть print) для регулярного выражения. Это заменит и выведет только те строки, которые были изменены:

command | sed -n 's/^#define VERSION //p'

Смотрите: человек сед

1

Если ваша версия grep поддерживает регулярные выражения Perl, вы можете сделать это следующим образом:

grep -oP '(?<=#define VERSION )[^ ]*$'

В противном случае используйте два вызова grep:

grep '#define VERSION' | grep -o '[^ ]*$'

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .