標準出力で受け取った複数の数字の合計値を出すワンライナー
CSVのテキストデータ、ここに含まれる数値の合計だけ知りたいんだけど、Excel立ち上げるのめんどいなあってこと、ありませんか?
そんなわたしのために、ワンライナーを作りました。
$ cat hoge.txt | xargs | perl -pe "s/ /+/g" | bc
使い方は、こんな感じ。
$ cat hoge.txt 14 214 313 $ cat hoge.txt | xargs | perl -pe "s/ /+/g" | bc 541
14,214,313 みたいな数字を標準出力から受け取ります。 それをパイプでつなぎいくつかのコマンドを介して、最終的には受け取ったすべての数値の合計値を返します。
解説しよう!
cat hoge.txt
ここは数値を受け取る部分。数値だけが出力されるようにご調整ください。
「大量のログデータの中から該当箇所をgrepして抜き出して、perl -peで数値前後の箇所削除する」とか「CSVの3項目目の数値だけ cut -d, -f3 して取り出す」とかいろいろ出来ると思います。
xargs
これがないと、数値がぶつ切りに改行されて出力されるため、まとめてbcに送る事ができません。
xargsを使うと受け取った数値が、" "(半角スペース)区切りの1行の引数として送ることが出来るようになります。
つまり、
"14
214
313"
を、"14 214 313"という形で受け取れます。
perl -pe "s/ /+/g"
ここでperlで半角スペースをプラス記号に置換しています。 つまり、"14 214 313”が、"14+214+313"になるわけです。
bc
最後に bc が"14+214+313"を計算し、出力してくれて終わり!
以上、Mac OS X Lion の Terminal で動作確認してます。
関連記事
-
Webとかガジェットとか
母ちゃんがゲーム実況をはじめてみた理由
-
Webとかガジェットとか
レシート1枚10円で売れるONEアプリ、試してみた
-
Webとかガジェットとか
メモアプリ使い分け2018年版 #iOSメモ #Trello #Ulysses #NoteShelf2
-
Webとかガジェットとか
Google Home Mini を百均のスポンジホルダーで壁付けにしてみた
-
Webとかガジェットとか
iOS操作自動化アプリ「Workflow」で作った、Dropbox Cameraのレシピを共有します
-
Webとかガジェットとか
Pebble Time のおかげで、電話を逃さなくなった。買ってよかった。