Last active
December 25, 2016 16:07
-
-
Save papiron/213ef730968f749d7d6b640aa79db10e to your computer and use it in GitHub Desktop.
第26回シェル芸勉強会福岡サテライト分
This file contains hidden or 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
Q2解答例 | |
$ unzip -p 20141019OSC_LT.pptx 'ppt/slides/slide*' | grep -o 危険 | wc -l | |
17 | |
Q4暫定解答 | |
ポイント:正規表現の最長一致 | |
$ unzip -p 20141019OSC_LT.pptx ppt/slides/slide7.xml | gsed 's/<a:p>/\n&/g' | grep '^<a:p>' | sed 's;<[^<>]*>;;g' | |
Q5暫定解答 | |
ポイント:正規表現の最長一致 | |
$ unzip -p graph.xlsx xl/worksheets/sheet1.xml | gsed 's/<row /\n&/g' | grep '^<row r' | sed 's;<[^<>]*>;;g' | |
<<閏年を列挙する>> | |
20世紀から24世紀までの閏年を列挙してください。(122個あるはず) | |
グレゴリオ暦による閏年の規則に則って | |
西暦年が4で割り切れる年は閏年。 | |
ただし、西暦年が100で割り切れる年は平年。 | |
ただし、西暦年が400で割り切れる年は閏年。 | |
$ seq 1901 2400 | awk '$1%4==0{print $1,$1%100,$1%400}' | awk '!($2==0&&$3!=0){print $1}' | |
$ seq 1904 4 2400 > date4; seq 2000 100 2400 > date100; seq 2000 2400 > date400; cat date4 | cat - date100 | sort | uniq -u | cat - date400 | sort | |
$ seq 1904 4 2400 | cat - <(seq 2000 100 2400) | sort | uniq -u | cat - <(seq 2000 400 2400) | sort | |
日付数が366日の年が閏年 | |
$ gseq $(gdate -d '1901/01/01 00:00:00' '+%s') 86400 $(gdate -d '2400/12/31 00:00:00' '+%s') | sed 's/^/@/' | gdate -f - '+%Y' | uniq -c | awk '$1==366{print $2}' | |
## dateutilsを利用(Ubuntuの場合はdateutils.dseq) | |
$ dateseq 1901-01-01 2400-12-31 | cut -c1-4 | uniq -c | awk '$1==366{print $2}' | |
## Tukubaiコマンド利用 | |
$ mdate -e 19010101 24001231 | tarr | self 1.1.4 | count 1 1 | awk '$2==366{print $1}' | |
2月29日が存在すればええやろ? | |
$ gseq 19010229 10000 24000229 | gdate -f - '+%Y' 2> /dev/null | |
$ seq 1901 2400 | sed 's/$/0229/' | gdate -f - '+%Y' 2> /dev/null | |
$ seq -f '%g0229' 1901 2400 | gdate -f - '+%Y' 2> /dev/null | |
$ echo {1901..2400}0229 | xargs -n1 | gdate -f- '+%Y' 2>/dev/null | |
## dateutilsを利用(Ubuntuの場合はdateutils.dseq) | |
$ dateseq 1901-01-01 2400-12-31 | grep '02-29' | cut -c1-4 | |
## Tukubaiコマンド利用 | |
$ mdate -e 19010101 24001231 | tarr | grep '0229$' | self 1.1.4 | |
3月1日の前日が2月29日ならいいでっしゃろ? | |
$ seq 1901 2400 | sed 's/$/0301-1day/' | gdate -f - '+%Y%m%d' | grep '29$' | cut -c 1-4 | |
$ seq -f '%.f0301-1day' 1901 2400 | gdate -f - '+%Y%m%d' | grep '29$' | cut -c 1-4 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment