bash将最高数字保持为变量

时间:2017-11-02 06:31:34

标签: bash

我试图将longest_length设置为最高数字。

#!/bin/bash
for i in $(cat list_of_aways)
do
echo $i | while IFS=, read -r area name host
do
        printf "%s\n" $name
        sleep 1
        longest_length=${#name}
        printf "%s\n" "$longest_length"
        done
done

这是数据。 9999999是最长的字符串 - 我想将该变量设置为数组值,因为它是最长的。

__DATA__
HOME,script_name_12345,USAhost.com
AWAY,script_name_123,USAhost.com
HOME,script_name_1,EUROhost.com
AWAY,script_name_123,USAhost.com
HOME,script_name_123456,EUROhost.com
AWAY,script_name_12345678999999,USAhost.com
HOME,script_name_1234,USAhost.com
AWAY,script_name_1234578,USAhost.com
HOME,script_name_12,EUROhost.com
AWAY,script_name_123456789,USAhost.com

1 个答案:

答案 0 :(得分:1)

您实际上可以使用awk命令执行此操作:

awk -F '_|,' 'NR>1 {if ( length($4) > length(max) ) { max=$4 }} END { print max }' INPUTFILE

_|, =我们正在使用2个分隔符_,

if ( length($4) > length(max) ) { max=$4 } = var max得到与每行中当前的第4个元素进行比较,并选择最大值。

print max =打印出最大值。

如果要将结果设置为名为longest_length的var:

longest_length = `awk -F '_|,' 'NR>1 {if ( length($4) > length(max) ) { max=$4 }} END { print max }' INPUTFILE`