Как отмечалось в другом месте этой цепочки, исходный вопрос в основном отвечает сам собой. Вот иллюстрация, показывающая, что условия if
также могут быть вложенными.
В этом примере используется if
, чтобы проверить, существует ли файл и является ли он обычным файлом. Если эти условия верны, проверьте, имеет ли он размер больше 0.
#!/bin/bash
echo "Which error log are you checking today? "
read answer
if [ -f /opt/logs/$answer*.errors ]
then
if [ -s /opt/logs/$answer*.errors ]
then
echo "Content is present in the $answer error log file."
else
echo "No errors are present in the $answer error log file."
fi
else
echo "$answer does not have an error log at this time."
fi
Да, немного сложнее. Попробуйте
awk -F, '
{n=split ($1, T, "\.")
$1 = DL = ""
for (i=1; i<=n; i++) {S[i] = T[i] + 0
gsub (/[0-9]/, "", T[i])
$1 = $1 DL (S[i]?sprintf ("%05d", S[i]):"") T[i]
DL = "."
}
}
1
' OFS=, file
Он разбивает первое поле в .
на массив T
, затем выполняет цикл по T
, помещает начальные цифры соответствующего элемента в массив S
(, используя функцию awk
для использования только начальных строк строки. цифры для арифметики ), удаляет только начальные цифры (! )из T
и перестраивает поле $1
.
Если Perl является опцией
perl -F, -pe '$_ = join ",", @F if $F[0] =~ s/(\d+)/sprintf "%05d", $1/ge' file