Как использовать grep match как переменную (а не целую строку) - PullRequest
0 голосов
/ 29 мая 2019

Это пример файла

[user@linux]$ cat DeviceA
DeviceA#sh ver
Cisco IOS Software, 1841 Software (C1841-ADVSECURITYK9-M), Version 15.1(4)M10, RELEASE SOFTWARE (fc2)
[user@linux]$

Version 15.1(4)M10 будет подсвечено

[user@linux]$ egrep --color=auto 'Version (15.1\(4\)M7|15.1\(4\)M10|15.2\(1\)T4)' DeviceA
Cisco IOS Software, 1841 Software (C1841-ADVSECURITYK9-M), Version 15.1(4)M10, RELEASE SOFTWARE (fc2)
[user@linux]$

Использование вывода grep в качестве переменной var

[user@linux]$ var=$(egrep --color=auto 'Version (15.1\(4\)M7|15.1\(4\)M10|15.2\(1\)T4)' DeviceA)
[user@linux]$

переменная печати var

[user@linux]$ echo $var
Cisco IOS Software, 1841 Software (C1841-ADVSECURITYK9-M), Version 15.1(4)M10, RELEASE SOFTWARE (fc2)
[user@linux]$

Вместо получения всей строки как var, могу ли я просто получить Version 15.1(4)M10 при выполнении echo $var?

Желаемый выход

[user@linux]$ echo $var
Version 15.1(4)M10
[user@linux]$

Ответы [ 2 ]

2 голосов
/ 29 мая 2019

Как упоминал Jww, этого легко достичь, используя флаг -o:

Командная строка:

fgrep -o "Version 15.1(4)M10" testtttt.txt, or, for introducing variable handling:
echo $(fgrep -o "Version 15.1(4)M10" testtttt.txt)

В сценарии вы можете сделать что-то вроде (не проверено):

var=$(fgrep -o "Version 15.1(4)M10" testtttt.txt)
echo $var
0 голосов
/ 29 мая 2019

попробуйте это:

tmp="${var%,*}"           # remove last part after ,
echo "${tmp##*,}"         # print last part after ,
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...