Чтобы узнать, есть ли в поле 5, я использую:
[[ -z ` echo $LINE | awk '{print $5}' ` ]]
мой вопрос, если есть другой элегантный способ проверить, если поле 5 равно нулю?
THX Yael
После length5=$(echo $LINE | awk '{ print length($5)}')
переменная $lenght5
будет содержать длину поля 5;
Примечание: в строке примера, если ttt были пустыми, yyy было бы полем 5, так что будьте осторожны: вы можете использовать
awk -F' '
вместо awk
сделать пробел разделителем полей, чтобы 2 пробела = пустое поле ....
Это пройдет, если 5-е поле будет строкой 0
(и не будет, если это 00
, 0.0
, или его нет и т.д.).
#!/bin/bash
LINE="123 aaa ddd ggg 0 yyy hhh"
if [[ "0" = `echo ${LINE} | awk '{print $5}'` ]]
then
echo "5th field is string '0'"
else
echo "5th field isn't string '0'"
fi
Это делает то, что вы хотите?
Было бы полезно, если бы вы предоставили больше примеров ввода.