Skip to content

Instantly share code, notes, and snippets.

View papiron's full-sized avatar

Katsuya TASHIRO papiron

  • Fukuoka, Japan
View GitHub Profile
@papiron
papiron / gist:32bd0546696c699f57a0
Last active December 2, 2015 10:09
シェル芸勉強会の前座的な手抜きの稚拙回答・・・
問題の元リンクはこちら
http://techlion.jp/archives/9691
ベタで力技で処理速度遅い回答はこちら・・・Macなのでfactorがgfactorになっちょります。
$ loopx <(seq 100 | gfactor | awk 'NF==2{print $2}') <(seq 100 | gfactor | awk 'NF==2{print $2}') | while read n1 n2; do [ $(echo $n1$n2 | gfactor | wc -w | tr -d " ") == 2 ] && echo $n1 $n2; done
2 3
2 11
2 23
2 29
2 41
@papiron
papiron / gist:8e31cb41988ad87794b1
Last active December 5, 2015 11:23
シェル芸初心者向け勉強会:ウォーミングアップ問題(問題のみ)
問題1
1から10まで合計を計算してください
問題2
下記のファイルを2列目の数字の小さい順に並べ替えてください。
$ cat list
b 11
d 5
a 3
e 4
@papiron
papiron / gist:72dbbe767d53901adaf4
Last active December 6, 2015 07:06
シェル芸勉強会過去問第2回(問題のみ)
問題1: 文字化けしたファイルの削除
次のように、空ファイル abc, DEFG と、文字化けした空ファイルを作ってください。
【今回は問題データのQ1ディレクトリ以下に作成済み】
$ touch abc
$ touch DEFG
$ echo ほげ | nkf -s | xargs touch
$ ls
%82ق%B0 DEFG abc
@papiron
papiron / gist:eb3fc90f86c6167b2b1c
Last active December 6, 2015 14:35
シェル芸初心者向け勉強会:ウォーミングアップ問題(問題と解答)
<<<ウォーミングアップ問題:問題と解答>>>
問題1
1から10まで合計を計算してください
解答
手続き型で
$ sum=0;i=1;while [ $i -le 10 ] ;do sum=`expr $sum + $i`; i=`expr $i + 1`; done; echo $sum
55
@papiron
papiron / gist:051774122944677bb7c9
Last active January 17, 2016 15:45
シェル芸勉強会過去問第2回(問題と解答)
解答は、勉強会で実際に解いてもらった問題のみ(問題2、問題3、問題4)
問題1: 文字化けしたファイルの削除
次のように、空ファイル abc, DEFG と、文字化けした空ファイルを作ってください。
【今回は問題データのQ1ディレクトリ以下に作成済み】
$ touch abc
$ touch DEFG
$ echo ほげ | nkf -s | xargs touch
$ ls
@papiron
papiron / gist:f256f09e5a6ddde1d28f
Last active March 13, 2016 09:13
シェルスクリプト入門福岡の解答例
2016/03/11 (金) に開催された「シェルスクリプト入門 福岡」の別解です。
https://atnd.org/events/75045
問題とデータは下記を参照のこと
https://github.com/ShuyaMotouchi/shellstadyQ
Tukubaiコマンドは下記を参照のこと。
https://uec.usp-lab.com/TUKUBAI/CGI/TUKUBAI.CGI?POMPA=LIST
これらの解き方はあくまでも例に過ぎません。他にも色々なやり方があるので考えてみよう。
元ネタはこちら。
真・マイナンバーシェル芸
http://papiro.hatenablog.jp/entry/2016/04/09/005547
チェックデジットに適合したマイナンバーをひたすら列挙するだけの誰得シェルスクリプト。
高負荷がかかり危険なので、念のため下記の止め方を必ず確認しておくべし。
GNU seqコマンドとmawkコマンドを利用。バックグラウンド10並列で処理。
マシンに高負荷がかかり危険なので、念のため1億行を出力した時点で強制終了させている。
処理速度は私が使ってるMacbook Air(物理2コア論理4コア)で1分30秒程度。
シェルスクリプトマガジンvol.40の7ページで紹介されているログ解析のサンプルデータを打ち込みました。
私が書いた記事ではないので気が引けますが、せっかく打ち込んだので公開しておきます。
コピペして使ってください。
$ cat proxy.log
date time srcip fqdn service category ua snd rcv
2016-06-11 14:33:32 192.168.0.5 www.sbmc.co.jp http banking safari 112 24764
2016-06-11 10:34:22 192.168.0.3 www.nic.ad.jp https technology firefox 214 2554
2016-06-11 14:25:45 192.168.0.2 uptime.netcraft.com https technology safari 986 67523
2016-06-11 09:22:21 192.168.0.4 www.mof.go.jp http government chrome 672 2554
@papiron
papiron / scrollbanner
Last active December 8, 2016 02:44
BSDのbannerコマンドで出力させたバナーを横にしてスクロールさせるシェルスクリプト
#!/bin/sh
# 必要な追加ソフトウェア: GNU sed、BSD付属のbanner
# Macの場合: $ brew install gnu-sed
# FreeBSDの場合: $ sudo pkg install gsed
# Ubuntuの場合: $ sudo apt install bsdutils
[ $# -lt 1 ] && echo 'Usage: scrollbanner STRING [HEIGHT]' && exit
string="$1"
if [ -z $2 ]; then
@papiron
papiron / randomfill
Last active December 10, 2016 15:52
端末を指定した文字でランダムに埋め尽くす
元ネタはこちら。面白い!
http://raintrees.net/news/93
https://twitter.com/kanata201612/status/806475573824360448
https://twitter.com/kanata201612/status/806477105974259712
https://twitter.com/kanata201612/status/806841499673444353
元ネタをawkでやってみた。awkだと速すぎるのでsleepで遅く調整。終了はCtrl-cで。
最初にカーソルを消しているので、終了後は tput init を実行しよう。
・tput cols 端末の幅(列数)