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

このスクリプトは、「magic」という単語を含むsomefile.txtのすべての行を取得し、ARRAY配列に配置します。

行を一時ファイルに保存せずにARRAYを直接埋める方法は?

ベストアンサー1

では、組み込み関数と連携bashします。readarray

readarray -t myarray < <(grep magic somefile.txt)

より一般的に言えば、シェルがテキストを処理するためにループを使用している場合は、おそらく間違って実行しています。シェル配列を使用して作業することは、通常、適切なプログラミング言語も必要であることを示します(またはですべての操作を実行しますawk)。

おすすめ記事