захватить c часть вывода --version qrencode - PullRequest
2 голосов
/ 03 марта 2020

Я пытаюсь получить только номер версии qrencode, но это не работает. Любая идея, почему?

$ qrencode --version | head -1 | awk '{print $3}'
qrencode version 3.4.4
Copyright (C) 2006-2012 Kentaro Fukuchi

Я совершенно сбит с толку, потому что этот метод используется для работы с большинством пакетов:

$ gzip --version | head -1 | awk '{print $2}'
1.6

Редактировать : спасибо за Помогите. Это связано с тем, что для qrencode вывод --version выводится в stderr вместо stdout. В соответствии с ответами на комментарии это часто встречается. Немного странно для меня, но достаточно справедливо.

Ответы [ 2 ]

2 голосов
/ 03 марта 2020

Не могли бы вы попробовать следующее.

qrencode --version 2>&1 | awk 'FNR==1{print $3;exit}'
1 голос
/ 03 марта 2020

Вы можете перенаправить stderr на стандартный вывод:

qrencode --version 2>&1 | head -1 |  awk '{print $3}'
                   ^^^^

Вывод: 3.4.4

Если вы хотите избавиться от head -1 и получить те же результаты с помощью awk, используйте

qrencode --version 2>&1 | awk 'NR==1{print $3}'

Подробнее см. команду cut или awk для печати первого поля первой строки .

...