LoginSignup
18
5

More than 5 years have passed since last update.

ワンライナー使いだしたら、作業が簡単になった話

Posted at

はじめに

新人AdventCalendar2016」10日目の記事です。
過去の学生時代の苦労が、上司のアドバイスによって、あっという間に解決された話です。

これまで

昨年度まで大学生やっていた私。自然言語処理を主にしていたので、とりあえずperlを使っていました。
perlでプログラミングして、TwitterAPI叩いてデータ集めて、データ眺めて分析といった作業。そのときの自分に教えたいテクニック。
そう、ワンライナーで書くこと。
ここから紹介することは、「おいおい、それくらい当たり前だろ」と言われることばかりを列挙しています。新人というPowerWordで流してください。

環境

劇的ビフォー・アフター

  • 文字列置換
pikotaro.txt
Pen
Pineapple
Apple
Pen

いちいちファイルを開いて、ループさせていた処理がこちら。

sample.pl
use strict;
use warnings;

$filename = $ARGV[0];
open(IN,$filename);

while(<IN>){
$word =~ s/Pen/book/;
print "$word\n";
}

close IN;

と書いていたのが、こう

cat pikotaro.txt | perl -pe 's/Pen/book/g'

み、みじかい…

  • エンコード

URL叩くために、URLエンコードの処理をしていたのがこちら

drama.txt
逃げ恥
レンタル救世主
校閲ガール
ドクターX
相棒
encode.pl
use strict;
use warnings;
use Encode;

$filename = $ARGV[0];
open(IN,$filename);

while(<IN>){
$url = ;
print "https://example.com/tv?"."drama=".$url."&conut=10"."\n";
}

close IN;

と、書いていたのが

``←明後日追記予定

とか
echo '逃げ恥' | nkf -WwMQ | tr = %

デコードは確認程度で端折ります。

  • デコード

echo '%E9%80%83%E3%81%92%E6%81%A5' | nkf -w --url-input

  • 単語数の集計

cat pikotaro.txt | grep Pen | wc

環境周りを確認するワンライナー

  • ファイルディスクリプタの確認

while true;do lsof -p pgrep -l java |cut -d " " -f1 |wc -l|awk '{print strftime("%y/%m/%d %H:%M:%S"), $0} {fflush() }';sleep 1;done;

  • ログをリアルタイムで確認

tail -f sample.log

コマンドラインが流れていくので、注意
Ctrl + cで終了

おわりに

ファイルいちいち開いて、集計なり整形していたのが嘘のようにすぐ終わるようになりました。
ワンライナーで書けるようになると、業務の効率化につながることでしょう。

紹介したいものは他にもありますが、私事につき
新人AdventCalendar2016」10日目の記事としてはここで〆ます。
来週の平日でまた増やすのと整理しますので。

18
5
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
5