Lambdaカクテル

京都在住Webエンジニアの日記です

Invite link for Scalaわいわいランド

入力のほげ行ごとに出力したいときはgsedの~を使う、そうして月のウーバーイーツ代を算出する

そういえば先月ウーバーイーツにいくら使ったんじゃろと思って、マネーフォワードの画面を見たんですが

f:id:Windymelt:20210611211713p:plain
スクショ

科目でソートしてこんな感じだったわけです。合計が知りたい。

とりあえずテキストコピペしたらなんとかなるでしょう、という勘でコピペすると次のようなフォーマットでコピーされました。

05/04(火)
PAYPAL *UBERBV EATS
-1,665
UCカード 食費  外食  
04/30(金)
PAYPAL *UBERBV EATS
-2,875
UCカード 食費  外食  
05/22(土)
PAYPAL *UBER(ほげほげ)
-1,234
UCカード 食費  外食  
05/21(金)
PAYPAL *UBER(ほげほげ)
-860
UCカード 食費  外食  
05/19(水)
PAYPAL *UBER(ほげほげ)
-3,445
UCカード 食費  外食  
05/13(木)
PAYPAL *UBER(ほげほげ)
-2,685
UCカード 食費  外食  
05/11(火)
PAYPAL *UBER(ほげほげ)
-1,534
UCカード 食費  外食  

3行目から4行ごとに額面の情報が出力されているので、そこだけ抜き出そうと思います。

Google先生に聞くとgsedでできるようです。

superuser.com

へー便利ですね。早速使ってみます。注意点として、起点を指示する行数は0オリジンではなく1オリジンです。つまり、ファイルの最初の行は1行目として扱われます。

% gsed -n -e '3~4p' temp.txt # 3行目を起点に、4行ごとに出力する
-1,665
-2,875
-1,234
-860
-3,445
-2,685
-1,534

おーすごい。合計出してしまいましょう。

% cat temp.txt | gsed -n -e '3~4p' | gsed -e 's/[-,]//g' | awk '{s+=$1} END{print s}'
14298

たくさん使っていますね。よかったですね。

余談

sumコマンドというのがあって、僕はそれが合計を出すコマンドだとばかり思っていたのですが、全くそういうことはなく、チェックサムを出力するコマンドです。でも出力結果は数値なので非常にまぎらわしい。

% cat tempora.txt | gsed -n -e '3~4p' | gsed -e 's/[-,]//g' | sum
25275 1

余談2

もっとちゃんとした方法もありそうですが、一番これが早かったのでまあよいと思います。

★記事をRTしてもらえると喜びます
Webアプリケーション開発関連の記事を投稿しています.読者になってみませんか?