awk:如何将字符串直接提取到bash数组中?

awk:如何将字符串直接提取到bash数组中?

假设我有这个:

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)。

相关内容