FreeBSD初心者運用日記 このページをアンテナに追加

 | 

2009-05-04

[]for文で大量のファイルを処理する際の注意事項 01:07 for文で大量のファイルを処理する際の注意事項 - FreeBSD初心者運用日記 を含むブックマーク はてなブックマーク - for文で大量のファイルを処理する際の注意事項 - FreeBSD初心者運用日記 for文で大量のファイルを処理する際の注意事項 - FreeBSD初心者運用日記 のブックマークコメント

以下のようなスクリプトを組んだときに、hoge.datが大きいと、エラーになってしまう。

・サンプルスクリプト

$ cat hoge.sh
#!/bin/sh
IFS='
'
for line in `cat hoge.dat`
do
    echo $line
done

・実行結果

~$ ./hoge.sh
./hoge.sh: Out of space

これは、for文の引数があまりに大きすぎるために、シェルでエラーになっている。

(topコマンドで確認したところ、ファイルの内容をメモリに展開しているみたいだ)

このスクリプトは以下のように改善する。

・サンプルスクリプト(改善版)

#!/bin/sh
IFS='
'
cat hoge.dat | while read line
do
    echo $line
done
 |