周知のとおり、ファイルI/Oよりもメモリ(変数に持たせる)のそれのほうが速い。
そういうわけで、変数を一行ずつ取り出し何かしたい場合の書き方。
ソース(test.sh)は以下の通り。引数(test.txt)を読み込み、hoge変数に内容を格納。それを一行ずつ標準出力している。
1 2 3 4 5 6 7 8 9 10 11 |
$ cat ./test.sh #!/bin/bash hoge=${1} cat ${hoge} | while read row; do line=$((line+1)) echo "${line}行目です。\n${row}" done exit 0 |
読み込ませるファイル (test.txt) がこちら。
1 2 3 4 |
$ cat ./test.txt aaa bbb ccc |
実行結果
1 2 3 4 |
$ ./test.sh ./test.txt 1行目です。aaa 2行目です。bbb 3行目です。ccc |
所感:標準出力せずに内部処理するなら、awkコマンドやsedコマンドのほうがイケてるかも?!