スポンサーリンク
コマンドの実行結果を配列に格納する
下記の形式で書くことにより、コマンドの実行結果をarrayに格納することができます。
array=($(コマンド))
下記に、grepの結果を配列に格納する方法を書いてみたいと思います。
サンプルコードと実行結果も貼っています。
よろしければご参考ください。
スポンサーリンク
grepで検索された行を配列に格納する方法
例えば、ファイルin.txtをgrepして"target"の文字列にマッチした行を、配列arrayに格納するためには下記のように書きます。
array=($(grep "target" in.txt))
サンプルコード
例えば、下記のようにin.txtがあったとします。
$ cat in.txt line1 line2 line3target line4wc line5target line6target
下記がサンプルコードになります。
ファイルin.txtをgrepして"target"の文字列にマッチした行を、配列arrayに格納しています。
その後、echoで配列の中身を表示しています。
$ cat sample.sh #!/bin/sh array=($(grep "target" in.txt)) echo ${array} echo ${array[@]} echo array1=${array[0]} echo array2=${array[1]} echo array3=${array[2]} for i in ${array[@]} do echo $i done
下記が実行結果となります。
$ ./sample.sh line3target line3target line5target line6target array1=line3target array2=line5target array3=line6target line3target line5target line6target
配列の参照方法
上記サンプルコードのechoの部分について補足説明です。
配列の先頭の値が出力されます。
echo ${array}
配列の全要素が出力されます。
echo ${array[@]}
下記のようにindexを指定して出力できます。
index=0の配列の要素が出力されます。
echo array1=${array[0]}
index=1の配列の要素が出力されます。
echo array2=${array[1]}
index=2の配列の要素が出力されます。
echo array3=${array[2]}
for文で配列の要素を順に取得して変数iに格納し、echoで出力しています。
for i in ${array[@]} do echo $i done
その他:grepの-oオプションで検索にマッチした部分のみ配列に格納
grepに-oオプションを付けることで、検索にマッチした部分のみ配列に格納することもできます。
下記に-oオプションを付けたサンプルコードを書いています。
正規表現と組み合わせると便利に使うことができます。
参考:grepの-oオプションで検索にマッチした部分のみ出力
スポンサーリンク