我有一个看起来像这样的文本文件:
:SomeWord:::SomeOtherWord:::MaybeAnotherWord::
假设我不知道有多少":"在单词之间,甚至有多少单词之间,但是每个单词都在":#34;之后,我想在Linux终端中获取该文本文件,并将2个本地变量设置为找到的第一个和第二个单词。
我试图从文本文件中创建一个数组然后获取0和1索引,但它并没有像我想的那样工作。
~# myarray=$(cat mytextfile.txt | tr ":" "\n")
~# for line in $myarray ; do echo "[$line]"; done
[SomeWord]
[SomeOtherWord]
[MaybeAnotherWord]
好吧,看起来它有效,但当我尝试通过索引抓取时,我得到了意想不到的结果..
~# echo ${myarray[0]}
SomeWord SomeOtherWord MaybeAnotherWord
~# echo ${myarray[1]}
~#
我不知道我是否错误地分割了文件?
答案 0 :(得分:2)
您没有创建数组,只是一个普通变量。要创建数组,您必须再次在()
周围编写$()
:
myarray=($(cat mytextfile.txt | tr ":" "\n"))
也可以写成:
myarray=($(tr ":" "\n" < mytextfile.txt))