这里有一些含糊不清的答案,但没有什么可以真正回答我的问题。我正处于我的bash脚本中的一个位置,我必须从输出中填充两个数组,如下所示:
part-of-the-file1:line_32
part-of-the-file1:line_97
part-of-the-file2:line_88
part-of-the-file2:line_93
我需要做的是将文件和行号拉出自己独立的数组。到目前为止,我有:
read FILES LINES <<<($(echo $INPUTFILES | xargs grep -n $id | cut -f1,2 -d':' | awk '{print $1 " " $2}'
修改后的IFS=':'
,但这不起作用。我确信有更好的解决方案,因为我不是脚本或工具向导。
答案 0 :(得分:5)
read
无法一次填充两个数组,就像它可以使用分词填充两个常规参数一样。最好只是迭代管道的输出来构建数组。
while IFS=: read fname lineno therest; do
files+=("$fname")
lines+=("$lineno")
done < <(echo $INPUTFILES | xargs grep -n "$id")
在此,我允许read
分割并丢弃grep
输出的尾端,而不是使用cut
和{{ 1}}。