[shell] ファイルのテキスト読み込みサンプル

2015年11月4日

Shell テクノロジー プログラミング

shellスクリプトででのFile-Readは以下のように行います。

対象環境

LinuxとMac限定です。Windowsはバーチャル環境やサーバーなどで対応ください。 ※windowsは「コマンドプロンプト」なので・・・ また、「sh」ではなく「bash」を基本的に使っているので、shしか使えない環境の人は 1行目を書き換えて対応してください。 読み込みファイルは「hoge.txt」にしてますが、対象のファイル名に置き換えてください。

変数に読み込み

``で囲んだ中に通常のコマンドを書くことで返り値を拾うことができます。

テキストファイルの内容全てを取得

#!/bin/bash txt=`cat hoge.txt` echo $txt

テキストファイルの先頭30行を取得

#!/bin/bash txt=`head -n 30 hoge.txt` echo $txt

テキストファイルの下から30行を取得

#!/bin/bash txt=`tail -n 30 hoge.txt` echo $txt

テキストファイルの"hoge"のある行を取得

#!/bin/bash txt=`grep hoge hoge.txt` echo $txt

1行毎に読み込む

catを先に行うので、読み込むファイルが動的に書き換えされても、初回に読み込んだ回数分roopする

1行ごとに読み込まれてループするので、ログ処理などで便利に使えます。 #!/bin/bash FILENAME="hoge.txt" cat $FILENAME | while read LINE;do echo $LINE done

読み込みファイルが動的に変更される場合、roopの回数にも影響される。

※無限ロープに注意 #!/bin/bash FILENAME="hoge.txt" while read LINE;do echo $LINE done < $FILENAME

実行方法

上記のプロいグラムを「read.sh」という名前で保存した場合、以下のように実行します。 $ bash read.sh 同一階層にあるhoge.txtに対して処理が行われて結果がターミナルに表示されます。

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。