Bash基于两个分隔符将文件读取到数组

时间:2012-06-26 19:15:58

标签: arrays file bash parsing ifs

我有一个文件,我需要解析成一个数组,但我真的只想要每行的一小部分,只有前84行。 有时这行可能是:

>MT gi...

我只想将MT输入数组。其他时候可能是这样的:

>GL000207.1 dn...

我需要GL000207.1

我在想你可以设置两个分隔符(一个是'>'而另一个是''空格),但我不确定你会怎么做。我已经阅读了有关内部字段分隔符的其他人的帖子,但我真的不确定它是如何工作的。我想也许这样的事可能有用吗?

desiredArray=$(echo file.whatever | tr ">" " ")
for x in $desiredArray
do
   echo > $x
done

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

怎么样:

head -84 <file> | awk '{print $1}' | tr -d '>'

head仅占用文件的第一行,awk剥离第一个空格及其后的所有内容,tr删除'&gt;'。

答案 1 :(得分:0)

你也可以用sed:

来做
head -n 84 <file> | sed 's/>\([^ ]*\).*/\1/'