【发布时间】:2016-01-30 01:29:53
【问题描述】:
我在使用 awk 索引从文本文件派生的变量(由 1 行和 4 个值组成)时遇到了一些问题。
特别是,我有一个包含循环所有输入信息的文本文件。每行包含 4 个特定的输入值,每次迭代都使用输入文件的不同行。
输入文件如下所示:
/home/hannelore/TVB-pipe_local/subjects/CON02T1/ 10012 100000 1001 --> used for iteration 1
/home/hannelore/TVB-pipe_local/subjects/CON02T1/ 10013 7200 1001 --> used for iteration 2
...
从这个输入文本文件中,我确定了不同的列(路径、种子、计数、目标),然后我想在循环的每次迭代中索引这些变量。但是,索引 0 返回整个变量,更高的索引返回没有输出。在这个获得的变量上使用 awk、cut 或 IFS,我无法拆分该变量。谁能帮我解决这个问题?
我使用的一些代码:
seed=$(awk '{print $2}' $input_file)
--> 从输入文件中提取列信息,这可行
seedsplit=$(awk '{print $2}' $seed)
seedsplit=$(cut -f2 -d ' ' $seed)"
提前谢谢你!
亲切的问候,
汉内洛尔
【问题讨论】:
-
我不明白你在
seedsplit作业中做了什么。awk的第二个参数是文件名,但$seed包含输入文件字段 2 中的所有值。 -
信息不足。这些路径位置有哪些文件?它们包含什么,你想从中提取什么?
-
您要索引什么变量?我在您的代码中没有看到任何数组。
-
也许你想做的是将
seed设为一个数组:seed=($(awk '{print $2}' $input_file))。然后就可以使用${seed[0]}、${seed[1]}等索引了。 -
谢谢,Barmar,使用额外的一对括号使它像我想要的那样工作。
标签: bash indexing awk string-split