在这种情况下,如何创建行数组?

时间:2018-07-13 12:28:33

标签: bash

给出一个文件,以便每一行中可以有多个单词,并且在任何单词与其他单词之间都存在一个空格,例如:

  

a a a a
  b b b b
  c c
  d d
  a a a a

如何创建数组,以使单元格编号i中的行号为i,但在数组中的元素之间没有重复!

根据上面的文件,我们将需要创建以下数组:
Array[0]="a a a a"Array[1]="b b b b"Array[2]="c c"Array[3]=d d

(文件名作为参数传递给脚本)。


我知道如何创建包含所有行的数组。像这样:

Array=()
while read line; do
Array=("${Array[@]}" "${line}")
done < $1

但是如何将文件的排序(和uniq)输出传递给while read..

1 个答案:

答案 0 :(得分:1)

您应该可以使用done < <(sort "$1" | uniq)代替done < $1

<()语法从子外壳创建一个类似文件的对象,以执行单独的命令集。