下記のやり方で1行ずつ読み込めるのですが、 tail -n 1が必要な理由がわかりません。
set line = head -n $locali $FILE
ではいけないでしょうか
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)
set line = `head -n $locali $FILE` として実行結果を確認してみれば理由は解るかと思いますが。。。
今実行できない環境のため教えていただきたいです。どうなっちゃうんでしょうか?
読み込むファイルの中身が、
1
2
3
4
5
6
7
8
9
10
だとすると、実行結果は以下になります。
1
1 2
1 2 3
1 2 3 4
1 2 3 4 5
1 2 3 4 5 6
1 2 3 4 5 6 7
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9 10
前にも書きましたが、cshで複雑なスクリプトを書く練習をしても意味無いです。実行環境も無いならなおさら。
「WindowsのBATで複雑な文字列処理をしたい」みたいなもの。
shやawk(あるいはPerl/Python/Ruby) で書いて、cshからはそれを起動するだけにしましょう。
ありがとうございます。
かなりわかりやすいです!ありがとうございました。

回答1件
あなたの回答
tips
プレビュー