我正在尝试将特定数据保存到数组中,我有一个这种结构的文件:
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)
好吧,有点儿。
(之后我需要找到它们的最大值,这就是为什么我要对它进行排序)。
感谢一群人
答案 0 :(得分:0)
这是一个可能的解决方案。让文件名为file
a=(`awk 'BEGIN{ORS=" "}{print $3}' file | sort`)
b=(`awk 'BEGIN{ORS=" "}{print $6}' file | sort`)
答案 1 :(得分:0)
这与你已经拥有的很相似,所以我不确定这是不是你想要的。它从每一行中提取所需的字段,然后在将输出存储到数组中之前对其进行排序。
thirdFields=( $( cut -d' ' -f3 file | sort) )
sixthFields=( $( cut -d' ' -f6 file | sort) )
答案 2 :(得分: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]}"