本を読む

読書やコンピュータなどに関するメモ

bash 4.0:テキストファイルを行単位で配列に読み込む

 bash 4.0では、タイトルに書いたような機能が、readコマンドみたいな感じで使える。

 まず、こんなテキストファイルを用意。

$ cat sample.txt
これはサンプルテキストです。
読み込んでみましょう。

ここまでが内容です。

 このファイルをmapfileコマンドで配列aryに読み込む。

$ mapfile ary < sample.txt

 読み込んだら、aryの各要素を表示してみる。なお、こちらは従来からある方法なので念のため。

$ for e in "${ary[@]}"; do echo "[$e]"; done
[これはサンプルテキストです。
]
[読み込んでみましょう。
]
[
]
[ここまでが内容です。
]

 各要素には改行も含まれることがわかる。

 mapfileにコールバックを指定して、何行か読み込むごとにコマンドを実行させることもできる。

$ mapfile -C 'echo reading' -c 1 ary < sample.txt
reading 0
reading 1
reading 2
reading 3

 -Cのあとに指定した文字列がコールバック。指定した文字列のあとにスペースと行番号をつけたコマンドが、-cで指定した行数を読み込むごとに実行される。

 なお、mapflileはreadarrayというコマンド名でも使える。

コメント

コメントの投稿

管理者にだけ表示を許可する

トラックバック

http://emasaka.blog65.fc2.com/tb.php/560-39c60941

 | HOME | 

Categories

Recent Entries

Recent Comments

Recent Trackbacks

Appendix

emasaka

emasaka

フリーター。
連絡先はこのへん

Monthly


FC2Ad