0

我正在尝试将特定数据保存到数组中,我有一个这种结构的文件:

field1 field2 field3 fields4 fields5 200
field6 field7 field8 fields9 fields10 520

逐行,每个字段仅由一个空格分隔我需要的是一个仅包含第 3 和第 6 字段中的字段的数组,即第一个数组将具有:(field3,field8),第二个将具有:(200, 520 )我尝试的是这样的:

        thirdFields=$(sort $1 | cut -d " " -f3)
        sixthField=$(sort $1 | cut -d " " -f6)

嗯,有点。(之后我需要找到它们中的最大值,这就是我对其进行排序的原因)。

谢谢一群人

4

3 回答 3

0

这是一个可能的解决方案。让文件名是file

a=(`awk 'BEGIN{ORS=" "}{print $3}' file | sort`)
b=(`awk 'BEGIN{ORS=" "}{print $6}' file | sort`)
于 2013-05-29T18:19:43.963 回答
0

这与您已经拥有的非常相似,所以我不确定这是否是您想要的。它从每一行中提取所需的字段,然后对输出进行排序,然后将其存储到数组中。

thirdFields=( $( cut -d' ' -f3 file | sort) )
sixthFields=( $( cut -d' ' -f6 file | sort) )
于 2013-05-29T18:21:47.783 回答
0

用 bash

$ while read -a fields; do f3+=(${fields[2]}); f6+=(${fields[5]}); done <<END
field1 field2 field3 fields4 fields5 200
field6 field7 field8 fields9 fields10 520
END
$ printf "%s\n" "${f3[@]}"
field3
field8
$ printf "%s\n" "${f6[@]}"
200
520
$ sorted=( $(printf "%s\n" "${f6[@]}" | sort -n) )
$ echo "min: ${sorted[0]}"
$ echo "max: ${sorted[-1]}"
于 2013-05-29T19:02:26.370 回答