假设我有这个:
ARRAY=()
NUM_EXTRACTED=$(cat somefile.txt | awk '/magic/{i++; print > i "_extracted.txt"} END {print i}')
for (( i=1; i<=$NUM_EXTRACTED; i++)); do
LINE=$(cat "$i"_extracted.txt)
ARRAY+=("$LINE")
done
该脚本获取 somefile.txt 中包含单词“magic”的所有行并将它们放入数组 ARRAY 中
如何直接填充 ARRAY,而不将行存储到临时文件中?
答案1
在 中bash
,这将与readarray
内置函数一起使用:
readarray -t myarray < <(grep magic somefile.txt)
更一般地说,如果您在 shell 中使用循环来处理文本,那么您很可能做错了。使用 shell 数组通常表明您还需要一种适当的编程语言(或者在 中完成所有操作awk
)。