Чтобы узнать, есть ли в поле 5, я использую:

   [[ -z ` echo $LINE  | awk '{print $5}' ` ]]

мой вопрос, если есть другой элегантный способ проверить, если поле 5 равно нулю?

THX Yael

2 ответа2

2

После length5=$(echo $LINE | awk '{ print length($5)}') переменная $lenght5 будет содержать длину поля 5;

Примечание: в строке примера, если ttt были пустыми, yyy было бы полем 5, так что будьте осторожны: вы можете использовать

awk -F' '

вместо awk сделать пробел разделителем полей, чтобы 2 пробела = пустое поле ....

0

Это пройдет, если 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

Это делает то, что вы хотите?

Было бы полезно, если бы вы предоставили больше примеров ввода.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .