Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
南武線の駅の中で、快速→各停→快速 となっている不憫な並びの3駅を抽出するegisonシェル芸。
# 南武線の駅の中で、快速→各停→快速 となっている不憫な並びの3駅を抽出するegisonシェル芸。
curl -so- -L goo.gl/4Gl1BL | tr ',\n' '\t' | egison -F 1cs -m '(match-all-lambda (list something) [ <join _ <cons $x <cons ,"快速" <cons $y <cons ,"各停" <cons $z <cons ,"快速" >>>>>>> [x y z]] )'
# [Result]
# {["鹿島田" "平間" "向河原"] ["登戸" "中野島" "稲田堤"] ["稲田堤" "矢野口" "稲城長沼"]}
#
# 既存のgrep等による単純な文字列マッチでは難しいオーバーラップしたパターンをループなしで検出できる。
# curlで習得する文字列には「稲田堤」はひとつしか含まれていないが、
# 例では稲田堤がオーバーラップしている。
@egisatoshi

This comment has been minimized.

Copy link

egisatoshi commented Jan 20, 2015

面白い例ありがとうございます!

以下、同じことをするワンライナーを僕の期待している書き方に書き直してみました。
この場合、-sオプションを使ったほうが、より一般的なレコードに対応できます。

% curl -so- -L goo.gl/4Gl1BL | tr -d '\r' | tr ',' '\t' | egison -F1s -s '(match-all-lambda (list [string string]) [ <join _ <cons [$x ,"快速"] <cons [$y ,"各停"] <cons [$z ,"快速"] _>>>> [x y z]])'
["鹿島田" "平間" "向河原"]
["登戸" "中野島" "稲田堤"]
["稲田堤" "矢野口" "稲城長沼"]
@greymd

This comment has been minimized.

Copy link
Owner Author

greymd commented Jan 20, 2015

Egiさん、なるほど、コレクションではなく-sオプションをつかってタプルとして読ませればよかったんですね!私がやろうとして挫折したやり方でした……w
ありがとうございます!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.