У меня есть сценарий, где я читаю строки из txt-файла, а затем назначаю его переменной $ snmp_cred, а затем пытаюсь удалить ip-адрес из строк, используя grep, в другую переменную ($ snmp_ip)Grep regex, обработанный как путь
while read snmp_cred; do
echo appliance $ADDM_address and $snmp_cred
snmp_ip=$(echo $snmp_cred | grep "/((25[0-5]|2[0-4][0-9]|[01]?[1-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[1-9][0-9]?)\d([email protected])/g")
echo IP for snmp community is $snmp_ip
done </tmp/input.txt
Содержание input.txt файла:
a10networks/generic/1.3.6.1.4.1.22610.1.3.27_thunder_series4430s/[email protected]
a10networks/generic/1.3.6.1.4.1.22610.1.3.23_thunder_series1030s/[email protected]
a10networks/generic/1.3.6.1.4.1.22610.1.3.16_ax3200_12/10.251[email protected]
регулярное выражение работает в онлайн-редакторе регулярных выражений, но терпит неудачу в Баш скрипт. Выходной сигнал башки:
++ echo $'a10networks/generic/1.3.6.1.4.1.22610.1.3.27_thunder_series4430s/[email protected]\r'
++ grep '/((25[0-5]|2[0-4][0-9]|[01]?[1-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[1-9][0-9]?)\d([email protected])/g'
+ snmp_ip=
+ echo IP for snmp community is
IP for snmp community is
Может ли кто-нибудь указать, что я делаю неправильно?
Во-первых, вы должны попытаться повторить '$ snmp_cred' перед вами трубы в' grep': 'snmp_ip = $ (эхо $ snmp_cred | grep' ... – SLePort
Хорошо, обновил сообщение с эхом и новым выходом. –
Может быть, вам нужно 'grep -P'? Думаю, вам также не нужно' /.../ g', удалить косые черты и ' g' в конце или просто 'grep '((25 [0-5] | 2 [0-4] [0-9] | [01]? [1-9] [0-9]?) \.) {3} (25 [0-5] | 2 [0-4] [0-9] | [01]? [1-9] [0-9]?) [0-9] @ "'. используется '\ d' tha t не поддерживается регулярным выражением POSIX. –