Попробуйте далее:
sshpass -p $PASSWORD ssh -t user@host<<EOF
echo uname -a
cd /tmp/ || exit 1
echo $PASSWORD | sudo -S bash ./remote_exec.sh
exit $?
EOF
С GNU sed
sed -n '
/Volume/!d
:a
n
/lock mode/{
p
d
}
/^\s*$/!ba
c\NA
' <file>
С awk
awk '
BEGIN{
FS="\n"
RS="\n\n"
}
/lock mode/{
for(i=1;i<=NF;i++)
if($i ~ /lock mode/)
print $i
next
}
{
print "NA"
}
' <file>
С awk
в режиме абзаца
awk -v RS= '{match($0, /lock mode=[^\n]+/);
print RSTART? substr($0, RSTART, RLENGTH): "NA"}' file
RS =
заставляет каждый абзац обрабатываться как отдельная запись. Вызов match заполняет координаты режима блокировки = ....
в предварительно определенные переменные RSTART
и RLENGTH
. Если RSTART
не равно нулю, печатается подстрока, соответствующая RSTART
и RLENGTH
, в противном случае печатается NA
Это просто с perl
:
perl -l -00 -ne 'print /lock mode.*/ ? $& : "NA"'
-l
устанавливает разделитель выходного поля на новую строку -00
: режим абзаца (записи - это абзацы) -ne код
: запускать код для каждой входной записи режим блокировки
, за которым следует любое количество символов, отличных от новой строки , затем выведите совпадение ( $ &
) или NA
в противном случае. В основном то же, что и решение awk @iruvar , но в perl
.