みなさま、perl使ってますでしょうか。
タイトルは釣りですが、結論から言うと、ワンライナーを書くならperlを使いましょうという話です。
理由は単純に、パッケージいれなくてもすぐ使えるのと、perlスクリプトを解読するのに知識が生きるからという理由からですね。Pythonでも同じなので、そこは止めません。
障害対応をしているとワンライナーを使うことも非常に多いので、使い方を説明してみます。是非覚えてみましょう。
オプション説明
まず、オプションの説明をしていきます。
-lオプションは改行を入れてくれます。また、ワンライナーのコマンドとして実行するには-eオプションが必要です。
1 2 3 4 5 6 |
|
次にこういうファイルをベースに説明します。
1 2 3 4 5 |
|
入力を一行ずつ処理する場合は、-nオプションが必要です。 また、「$.」は行数、$_はその行の内容を表示してくれます。
1 2 3 4 5 |
|
awkのように特定のフィールドを抜き出したい場合は-aオプションを使い、$Fnを使います。nは0から始まるので、気をつけましょう。
1 2 3 4 5 6 7 8 9 10 11 |
|
if使って分岐したい場合は、以下のようにします。
1 2 |
|
とか
1 2 |
|
のようにできますね。
発展編
もう少し実践的なものをやってみましょう。
このようなファイルがあるとします。
1 2 3 4 |
|
1列目をキーに、2列目を値にして、表示してみます。こうすることで、四則演算などができるようになります。
1 2 3 4 |
|
こんなファイルがあったとします。
1 2 3 4 5 6 7 8 |
|
分毎に、何行あるかカウントしたい場合は以下のようにします。
1 2 3 4 |
|
終わりに
perlは慣れない人も多いかもしれませんが、非常に便利なツールでして、特にワンライナーで覚えた知識はperlスクリプトを解読するときにも応用できますので、非常にオススメです。
awkなどの場合、なかなかその知識が他に応用しにくいので、個人的にはperlで統一したほうが効率がいいと思ってしまうんですよね。他にRubyとかPythonで書く人もいるんだろうか。Pythonならデフォルトで入ってることが多いでしょうし。
また、障害対応のときに、さらっとワンライナー書けると、こいつデキると印象づけることができるような気がします。
今回紹介した以外にも、やろうと思えば、いくらでもできると思います。あとは、どこまでワンライナーでやるかはチームで相談しつつ、無理せずできればよいと思いますね。
是非便利ですので、使ってみてください!ではでは!