Пока awk обрабатывает файл, переменная NR
представляет общее количество обработанных записей. Таким образом, вам нужно только добавить шаблон , такой как
(NR == 5)
, перед действием
{split($4,a,"/");...
, например,
(NR == 5){split($4,a,"/");...
, в строку процесса 5.
Если вы хотите обработать последний Только строка , затем вы можете сохранить строку в действии по умолчанию
{ save = $0; }
и обработать эту строку в разделе END
. Но вам нужно будет выполнить разделение полей там ( $ 0
больше не применяется):
END {split(whatever,a,"/");...
Для диапазона вы должны использовать более сложное выражение,
( NR >= 2 && NR <= 5 )
, чтобы выбрать строки со 2 по 5.
Дополнительная литература:
#!/bin/bash
while true
do
wildflyStarted=$(grep -ic "Wildfly.*started in.*ms.*Started.*of.*services" /opt/wildfly/standalone/log/server.log)
if [[ "$wildflyStarted" -eq "1" ]]; then
break;
else
sleep 1;
fi
done
while true
do
ejbcaStatus=$(/opt/wildfly/bin/jboss-cli.sh -c --commands="cd deployment,cd ejbca.ear,read-attribute status")
if [[ "$ejbcaStatus" -eq "OK" ]]; then
break;
else
sleep 5;
fi
done
Этот скрипт у меня работал.