#author("2024-07-15T15:31:37+09:00","default:nobuoki","nobuoki") #author("2024-07-15T15:34:29+09:00","default:nobuoki","nobuoki") * 機能 [#zc341f72] 標準入力から都道府県名を入力すると、その都道府県の丸亀製麺の店舗名を出力します 埼玉県の丸亀製麺からランダムに3店舗を抽出 #prism(bash){{{ $ echo 埼玉県 | marukame | shuf -n3 埼玉県 北葛飾郡 丸亀製麺杉戸 埼玉県 三郷市 丸亀製麺三郷 埼玉県 さいたま市 丸亀製麺さいたま中央 }}} 丸亀製麺の都道府県ランキング 丸亀製麺の多い都道府県ランキング #prism(bash){{{ $ todofuken | cut -f2 | marukame | awk '{a[$1]++}END{for(v in a)print a[v], v}' | sort -k1,1n 1 香川県 2 鳥取県 3 佐賀県 3 秋田県 4 島根県 5 岩手県 5 高知県 5 福井県 6 宮崎県 6 山梨県 6 青森県 6 大分県 6 徳島県 7 山形県 7 和歌山県 8 沖縄県 9 愛媛県 9 熊本県 9 石川県 9 長崎県 10 鹿児島県 10 富山県 11 三重県 11 福島県 12 群馬県 12 山口県 12 奈良県 13 滋賀県 13 新潟県 14 長野県 14 栃木県 15 宮城県 16 岐阜県 17 岡山県 20 京都府 20 福岡県 22 茨城県 25 北海道 26 広島県 27 静岡県 43 千葉県 48 兵庫県 52 神奈川県 54 大阪府 59 埼玉県 66 愛知県 86 東京都 $ todofuken | cut -f2 | marukame | awk '{a[$1]++}END{for(v in a)print a[v], v}' | sort -k1,1nr | cat -n 1 86 東京都 2 66 愛知県 3 59 埼玉県 4 54 大阪府 5 52 神奈川県 6 48 兵庫県 7 43 千葉県 8 27 静岡県 9 26 広島県 10 25 北海道 11 22 茨城県 12 20 京都府 13 20 福岡県 14 17 岡山県 15 16 岐阜県 16 15 宮城県 17 14 長野県 18 14 栃木県 19 13 滋賀県 20 13 新潟県 21 12 群馬県 22 12 山口県 23 12 奈良県 24 11 三重県 25 11 福島県 26 10 鹿児島県 27 10 富山県 28 9 愛媛県 29 9 熊本県 30 9 石川県 31 9 長崎県 32 8 沖縄県 33 7 山形県 34 7 和歌山県 35 6 宮崎県 36 6 山梨県 37 6 青森県 38 6 大分県 39 6 徳島県 40 5 岩手県 41 5 高知県 42 5 福井県 43 4 島根県 44 3 佐賀県 45 3 秋田県 46 2 鳥取県 47 1 香川県 }}} * 実装:parallelあり版(ちょっと速い) [#q5ffad5e] #prism(bash){{{ marukame(){ scraper(){ curl -sSL "https://stores.marugame.com/$1" | grep -oP '(?<=id="citylist-json">)[^<]*(?=</script>)' | jq -r '.[] | .key.entity.profile.c_cp_MetaTitle' } export -f scraper parallel -j4 -k scraper {} | sed 's/ *| */\t/g' | awk -F'\t' -v OFS='\t' '{sub(/ /,"\t", $2); print $2, $1}' } }}} * 実装:parallelなし版 [#g4a40069] #prism(bash){{{ marukame() { while read -r pref; do curl -sSL "https://stores.marugame.com/${pref}" | grep --color=auto -oP '(?<=id="citylist-json">)[^<]*(?=</script>)' | jq -r '.[] | .key.entity.profile.c_cp_MetaTitle' | sed 's/ *| */\t/g' | awk -F'\t' -v OFS='\t' '{sub(/ /,"\t", $2); print $2, $1}' done } }}}