ITコンサルの日常

ITコンサル会社に勤務する普通のITエンジニアの日常です。

CシェルでCSVファイル処理

「$<」などというキーワードがあるとは知らなかった。
昔、kshでやったときはreadコマンドを使ったんだけど、これはBourne Shell系のみの話らしい。
例えばこんな感じ。

taka@localhost ~
$ cat test.csv
aaa,123
bbb,234

taka@localhost ~
$ cat test.csh
#!/usr/bin/csh

while (1)
        set line = $<

        if ("$line" == "") then
                break
        endif

        set f1 = `echo $line | cut -d, -f1`
        set f2 = `echo $line | cut -d, -f2`

        printf "f1 = %s, f2 = %s\n" $f1 $f2
end

taka@localhost ~
$ ./test.csh < test.csv
f1 = aaa, f2 = 123
f1 = bbb, f2 = 234

taka@localhost ~
$

if文の"$line"のダブルクォートをはずすと、データの中身によっては構文エラーになるってのに気づかずに、かなり悩んでしまいました。。