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"のダブルクォートをはずすと、データの中身によっては構文エラーになるってのに気づかずに、かなり悩んでしまいました。。