#bash #shell #unix
#bash #оболочка #unix
Вопрос:
Моя цель — узнать длину второго поля, и если длина превышает пять символов, тогда мне нужно показать всю запись с помощью сценариев / команд оболочки.
echo "From the csv file"
cat latency.csv |
while read line
do
latency=`echo $line | cut -d"," -f2 | tr -d " "`
length=$(echo ${#latency})
if [ $length -gt 5 ]
then
echo $line
fi
done
В моем коде нет ничего плохого, но, будучи UNIX / Linux, я подумал, что должен быть более простой способ делать такие вещи.
Есть ли один такой более простой метод?
Ответ №1:
awk -F, 'length($2)>5' file
это должно сработать
обновлено
awk -F, '{a=$0;gsub(/ /,"",$2);if(length($2)>5)print a}' file
Комментарии:
1. За исключением того, что плакат хочет игнорировать пробелы в полях, как указано
tr -d " "
.2. Да, к сожалению, в полях есть пробелы, которые я хочу игнорировать. Я не могу сократить пробелы в выходных данных, но при выполнении длины мне нужно удалить пробелы.
Ответ №2:
awk -F, '{
t = $2
gsub(/ /, x, t)
if (length(t) > 5)
print
}' latency.csv
Или:
perl -F, -ane'
print if
$F[1] =~ tr/ //dc > 5
' latency.csv