у меня этот файл содержит данные такого типа
NAME: "Chassis", DESCR: "Nexus5020 Chassis"
PID: N5K-C5020P-BF , VID: V04 , SN: SS613390FZT
NAME: "Module 1", DESCR: "40x10GE/Supervisor"
PID: N5K-C5020P-BF , VID: V04 , SN: JA91344BHNK
NAME: "Module 2", DESCR: "6x10GE Ethernet Module"
PID: N5K-M1600 , VID: V01 , SN: JA71228018M
NAME: "Module 3", DESCR: "8x1/2/4G FC Module"
PID: N5K-M1008 , VID: V01 , SN: JAB1531020C
С помощью сценария оболочки мне удалось получить соответствующие данные, которые являются строками в DESCR: и SN: и сохранить их в CSV-файле, как показано ниже;
Nexus5020 Chassis,SS613390FZT
40x10GE/Supervisor,JA91344BHNK
6x10GE Ethernet Module,JA71228018M
8x1/2/4G FC Module,JAB1531020C
У меня вопрос, какая модификация нужна, чтобы скрипт пропустил первое совпадение для DESCR: и SN: так получится так в выводе?
40x10GE/Supervisor,JA91344BHNK
6x10GE Ethernet Module,JA71228018M
8x1/2/4G FC Module,JAB1531020C
Сценарий здесь:
#/bin/bash
re_descr='DESCR: "([^"]+)"'
re_sn='SN: ([^[:space:]]+)'
while read -r; do
if [[ $REPLY =~ $re_descr ]]; then
descr=${BASH_REMATCH[1]}
continue
fi
if [[ $REPLY =~ $re_sn ]]; then
sn=${BASH_REMATCH[1]}
fi
if [[ $descr && $sn ]]; then
printf '%s\t%s\n' "$descr","$sn"
unset -v descr sn
fi
done < <(cat <filename>)