shell--ファイルから一行ずつ取り出す方法
目的
cshでファイルから一行ずつ取り出して、
処理させたい。
概要
私は未だにcshを使っている。
なぜならそれは分子研の標準シェルに指定されているからである。
今回もファイルから1行ずつ取り出す簡潔な書き方が
わからなくて困ってしまった。
かっこ良いスクリプティング方法がわからなかったので、
結局、head
とtail
で愚直に書いてみることにした。
方法と結果
bashでファイルを一行ずつ読み込む方法
read
コマンドを使うことで、
一行ずつ変数に格納することができる。
#! /bin/bsh FILE="読み込むファイル名" cat $FILE | while read line do echo "$line" done
しかし、この洗練されたスクリプトをcshに書き直す方法がわからない。
そこで、while
の代わりにforeach
を用いて書き直すことを考えた。
#! /bin/csh set FILE="ファイル名" foreach line (`cat "$FILE"`) echo "$line" end unset FILE
これを実行すると、
空白区切りで変数lineに格納されるため、
上手くいかなかった。
#ファイル abc def ABC DEF l V abc def ABC DEF
しかたがないので、
head
とtail
を用いて、
原始的にファイルから一行ずつ取り出すことにした。
cshでファイルを一行ずつ読み込む方法
#! /bin/csh set FILE = "ファイル名" set locali = 1 set localN = `wc -l $FILE | awk '{print $1}'` while ( $locali <= $localN ) set line = `head -n $locali $FILE | tail -n 1` echo "$line" @ locali = $locali + 1 end unset locali , localN , line unset FILE exit(0)