やりたいことと対象のファイル
- シェルスクリプトを使いたい。ファイルは exclude_list.sh
- CSV ファイル (target.csv) の 2 列目の値が除外リストにある値と一致したらその行を除きたい。そして resutl.csv として出力したい。
- 除外リスト (list.txt) は改行区切りのテキストファイル
- 登場したファイルはすべて同じディレクトリに置く。
面接官「ほう。得意な言語はPerlですか」
学生「はい!」
面接官「では、10000までの素数を出力してください」
学生「system "seq 2 10000 | factor | awk 'NF == 2' | cut -d: -f1"」
面接官「げぇっ シェル芸人」— ぐれさん (@grethlen) February 27, 2014
面接官「ほう。得意な言語はPerlですか」 学生「はい!」 面接官「では、10000までの素数を出力してください」 学生「system “seq 2 10000 | factor | awk ‘NF == 2’ | cut -d: -f1″」 面接官「げぇっ シェル芸人」
まあ!素敵!
あら?Perl でと出題されていますのに、シェルで解答なさっていらっしゃるようですわね。それで、面接官が「げぇっ」となってしまいましたのね!面白いですわ♪
さて、今回はこのシェル部分に注目し、各コマンドについて調べることでシェルに対する理解を深める、勉強をしたいと存じます♪
seq 2 10000 | factor | awk 'NF==2{print $2}'
最初に引用したツイートのシェル部分から最後の部分のみ変更しています。いろいろ調べていましたら、「cut」コマンドは「awk」コマンドを工夫することで省略できましたから。
さて、具体的に出力を確認しながら各コマンドを勉強してまいりましょう。その際、10000 までですと出力が多すぎますので、10 までの数で考えます。