Last active
December 25, 2017 16:18
-
-
Save papiron/0f5df99128adb55434a5eeb5fd883499 to your computer and use it in GitHub Desktop.
うんこチャレンジawk版
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
シェル芸bot作者さんが作られた、下記うんこチャレンジツイートのawkバージョンだぜ! | |
140文字に入らなかったのでGistに載せておきましたよ・・・ | |
https://twitter.com/theoldmoon0602/status/945283544682610692 | |
同じような考え方でawk使って実装してみたのがこちら。 | |
``` | |
$ yes う ん こ | awk 'BEGIN{srand()}{i=int(rand()*10)%3+1; print $i}' | awk '{s=$0 s;print $0; if(substr(s,0,3)=="こんう"){exit;}}' | tr -d '\n';echo "つるん"; | |
ううこんんここうううんううこんんうううこんううこんううんうんううんこつるん | |
``` | |
上記と考え方を変えてみた解答がこちら。 | |
``` | |
$ echo うんこ | grep -o . | awk -v num=inf 'BEGIN{srand()}{a[NR]=$0}END{i=1;while(i<=num){s=a[int(rand()*NR+1)];print s;i++;ss=ss s;if(substr(ss,(length(ss)+1)-3,3) == "うんこ"){exit;}}}' | tr -d '\n'; echo 'つるん'; | |
ううこんんんうこんんんんううんうこうこうこんんうこんこうんんうこんうんこつるん | |
``` | |
上記の解答例ですが、以前に入力したテキストデータを使って、指定した数だけランダム表示するawkコマンドを作った事があります。 | |
これをヒントに考えてみました。りんご、みかん、なしをランダムに選択して10個出力するawkワンライナー。 | |
``` | |
$ echo -e 'りんご\nみかん\nなし' | awk -v num=10 'BEGIN{srand()}{a[NR]=$0}END{i=1;while(i<=num){s=a[int(rand()*NR+1)];print s;i++;}}' | |
なし | |
なし | |
みかん | |
なし | |
りんご | |
なし | |
みかん | |
みかん | |
なし | |
みかん | |
``` | |
ちなみに上記の例ですが、ユニケージ開発手法で利用されるTukubaiコマンドに”ransu"というコマンドがありまして、これに近い動きをするものをawkを使って実装したものになります。 | |
``` | |
$ echo -e 'りんご\nみかん\nなし' | ransu 10 | |
みかん | |
りんご | |
みかん | |
なし | |
みかん | |
みかん | |
みかん | |
りんご | |
りんご | |
みかん | |
``` |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment