たいちょーの雑記

ぼくが3日に一度くらい雑記をかくところ

owariコマンドを実行するActionを書きました

書きました。常々CIと相性がいいんじゃないか?と思っていたんです。ということで、Actionの書き方の勉強ついでに作ってみました。 github.com owariとは github.com owariは終焉にまつわるアスキーアートを出力するだけのジョークコマンドです。このブログ…

第59回シェル芸勉強会に参加しました

参加しました 午前 構造化プログラミング入門の第三回。涙の最終回です。 テーブル駆動方式とは論理分の代わりにテーブルの情報を使ってプログラムを制御するもの。 状態遷移表を素直にプログラムにする感じ。講義の途中で演習がありました。自分はC#で解答…

第58回シェル芸勉強会に参加しました

しました 午前 構造化プログラミング入門の2回目でした。ジャクソン流構造化プログラミングについての講義で、例題に図を描いてみたりなどをしました。 配信はこちら 午後 今回はPowerShellでも解きます。問題と解答はこちら Q1 1行目に今日の日付、3行目以…

第57回シェル芸勉強会に参加しました

参加しました 今回は午前もありました 午前 今回は久々に午前がありました。配信はこちら。構造化プログラミングシリーズの1回目。 ダイクストラ大先生の言ってることを理解するにはGotoだらけのプログラムを書くと良いとのことで、状態遷移図とそれを途中ま…

シェル芸160ノック29

9月末に発売されたシェル芸本の続きです。 gihyo.jp 前回はこちら xztaityozx.hatenablog.com 問題156 $ echo gihyo.jp github.com gitlab.com wikipedia.org | fmt -1 | while read fqdn; do [[ "$(nslookup $fqdn | awk '/Non-authoritative answer:/,0' |…

シェル芸160ノック28

9月末に発売されたシェル芸本の続きです。 gihyo.jp 前回はこちら xztaityozx.hatenablog.com 問題151 $ curl http://file.ueda.tech/eki/l/11302.xml > a $ cat a | grep -Pe "lon|lat|name" | sd '<[^>]+>' '' | awk '{print $1}' | xargs -n3 | while rea…

シェル芸160ノック27

9月末に発売されたシェル芸本の続きです。 gihyo.jp 前回はこちら xztaityozx.hatenablog.com 問題146 $ git branch --no-merged=main -r | xargs -n1 -I@ zsh -c "git log -1 --since $(date -d '30 days ago' +%F) @ | grep . &> /dev/null || {echo branc…

シェル芸160ノック26

9月末に発売されたシェル芸本の続きです。 gihyo.jp 前回はこちら xztaityozx.hatenablog.com 問題141 $ yes | awk '{print "echo",NR",""$(shuf -n5 -re {a..z}),$(shuf -n10 -re {a..z}),$(shuf -n5 -re {a..z})@mail.com"}' | head -n1000 |bash | tr -d …

シェル芸160ノック25

9月末に発売されたシェル芸本の続きです。組み合わせの列挙系は楽しいですね。 gihyo.jp 前回はこちら xztaityozx.hatenablog.com 問題132 $ cat ./qdata/132/httpd-access.log | awk '$(NF-1)==500' | while read L; do mail -s "500があったよ" こ こにメ…

シェル芸160ノック24

9月末に発売されたシェル芸本の続きです。 gihyo.jp 前回はこちら xztaityozx.hatenablog.com 問題127 $ while true; do echo -en "$(tput lines) $(tput cols)\r"; done 問題128 $ man pcrepattern | tail -n1 | sel 1 2 PCRE 8.38 問題129 $ base64 -d qda…

シェル芸160ノック23

9月末に発売されたシェル芸本の続きです。むずかしい gihyo.jp 前回はこちら xztaityozx.hatenablog.com 問題121 $ (strace seq 1e7 | head) |& grep -oPe '"[^"]+"' | grep / "/usr/bin/seq" "/etc/ld.so.preload" "/etc/ld.so.cache" "/lib/x86_64-linux-g…

シェル芸160ノック22

9月末に発売されたシェル芸本の続きです。 gihyo.jp 前回はこちら xztaityozx.hatenablog.com 問題116 $ exa /dev/ -l | grep "^b" | awk '{print $NF,$2}' loop0 7,0 loop1 7,1 loop2 7,2 loop3 7,3 loop4 7,4 loop5 7,5 loop6 7,6 loop7 7,7 ram0 1,0 ram1…

シェル芸160ノック21

9月末に発売されたシェル芸本の続きです。 gihyo.jp 前回はこちら xztaityozx.hatenablog.com 問題110 $ fd . --hidden --type=d /var/log --exec zsh -c 'echo {} $(fd --type=f --max-depth=1 --hidden . {}|wc -l)' /var/log/unattended-upgrades 0 /var/…

シェル芸160ノック20

9月末に発売されたシェル芸本の続きです。いっぱい解いちゃった gihyo.jp 前回はこちら xztaityozx.hatenablog.com 問題103 $ seq 99 | awk '{print "ln hoge "$1}' | bash $ ls -l hoge -rw-r--r-- 100 xztaityozx xztaityozx 2 Dec 13 19:57 hoge 問題104 …

シェル芸160ノック19

9月末に発売されたシェル芸本の続きです。ついに100問を超えた gihyo.jp 前回はこちら xztaityozx.hatenablog.com 問題98 $ csvq -f CSV -n -r ./qdata/98/ 'select case when list1.c1 not in (select * from list2) then list1.c1 else "@" end, case when…

シェル芸160ノック18

9月末に発売されたシェル芸本の続きです。パズルむずい gihyo.jp 前回はこちら xztaityozx.hatenablog.com 問題90 $ echo 12 4 34 8 56 16 | xargs -n2 | awk '{print "numconv -b"$2" <<< "$1}' | bash| jq -s add 120 問題91 $ echo {2,3,5,7},{2,3,5,7},{…

シェル芸160ノック17

9月末に発売されたシェル芸本の続きです。いつの間にか半分終わってた gihyo.jp 前回はこちら xztaityozx.hatenablog.com 問題85 $ echo | xxd -ps | sd '0a' '' | sd '20' ' ' | fmt -1 | xargs -n1 -I@ printf "%d\n" 0x@ | numaverage | numconv -t Hex…

シェル芸160ノック16

9月末に発売されたシェル芸本の続きです。無敵のteipコマンドありがとう gihyo.jp 前回はこちら https://xztaityozx.hatenablog.com/entry/2021/12/08/220451:cite:mebed 問題79 # ↓でテキトウにいい感じの出力になってるのを目で探す $ iconv --list | fmt …

シェル芸160ノック15

9月末に発売されたシェル芸本の続きです。 gihyo.jp 前回はこちら xztaityozx.hatenablog.com 問題74 $ cat qdata/74/days.txt | ocs -ISystem.Globalization '{var j=new CultureInfo("ja-JP");j.DateTimeFormat.Calendar = new JapaneseCalendar();println…

シェル芸160ノック14

9月末に発売されたシェル芸本の続きです。文字コードに突入した。 gihyo.jp 前回はこちら xztaityozx.hatenablog.com 問題68 $ s=0;t="$(bc <<< 2^100)";while [[ $(bc <<< $t-$s) != 1 ]]; do m=$(bc <<< "($t+$s)/2"); echo $m; date -d @$m && s=$m || t=…

シェル芸160ノック13

9月末に発売されたシェル芸本の続きです。日付変換系はいろんなテクニックやオプションが解説で見られて楽しいですねえ gihyo.jp 前回はこちら xztaityozx.hatenablog.com 問題63 $ dateutils.dseq --format "%Y-%m %w" 2021-01-01 2021-12-31 | awk '$2==00…

シェル芸160ノック12

9月末に発売されたシェル芸本の続きです。 gihyo.jp 前回はこちら xztaityozx.hatenablog.com 問題57 $ cat qdata/57/table.md | sd '\|' ' | ' | column -t | sd ' ?\| ?' '|' | AAA | BBB | CCC | | --- | --- | --- | | 1 | 123 | 4 | | 10000 | 1 | 64 |…

シェル芸160ノック11

9月末に発売されたシェル芸本の続きです。 gihyo.jp 前回はこちら xztaityozx.hatenablog.com 問題52 awk '{print FILENAME,$0}' qdata/52/* | awk '$2=="*"{for(i=3;i<=NF;i++)a[i]=$i}$2!="*"{for(k in a) print $1,$2,a[k],$k}' | sel -d_ 2 U X A 4 U X …

シェル芸160ノック10

9月末に発売されたシェル芸本の続きです。データの集計・変形は普段からよくやるからか手段が思いつきやすいですね gihyo.jp 前回はこちら xztaityozx.hatenablog.com 問題47 $ cat qdata/47/mom.csv | awk -F, '{if(s){$3=($2/s-1)*100;$3=($3<0?$3:"+"$3)"…

シェル芸160ノック9

9月末に発売されたシェル芸本の続きです。問題45がとんでもなく難しく初めてギブしました gihyo.jp 前回はこちら xztaityozx.hatenablog.com 問題42 cat qdata/42/item.md | teip -og '^(#|\d.)' -- awk '{$1=="#"?s=1:$1=s++".";print}' # AAA 1. AAAはすご…

シェル芸160ノック8

9月末に発売されたシェル芸本の続きです。 gihyo.jp 前回はこちら xztaityozx.hatenablog.com 問題37 $ cat qdata/37/diarydiary.txt | paste -sd '' | grep -oPe "(.+)\1" 私は私は シェル芸シェル芸 問題問題 すす いろいろ 問題38 $ cat qdata/38/this_is…

シェル芸160ノック7

9月末に発売されたシェル芸本の続きです。正規表現めちゃめちゃに難しい gihyo.jp 前回はこちら xztaityozx.hatenablog.com 問題31 $ cat qdata/31/iampen.txt | perl -pe "s{(?<=<strong>)([^<]+)}{\U\$1}" This is <strong>A PEN</strong>. I am a pen. <pre>Are you pen?</pre> <strong>YES</strong>, I am. 問</strong>…

シェル芸160ノック6

9月末に発売されたシェル芸本の続きです。 gihyo.jp 前回はこちら xztaityozx.hatenablog.com 問題26 $ function zshaddhistory() { local now="$(date +%H)"; [[ "$now" -ge 18 ]] || [[ "$now" -le 4 ]] && echo "早く帰れ" } 解答例みたいにすべての行動…

シェル芸160ノック5

9月末に発売されたシェル芸本の続きです。問題21をやっていたらzshexpnを読み込むことになってしましました。できることが多いですね。 gihyo.jp 前回はこちら xztaityozx.hatenablog.com 問題21 $ (cd qdata/21; fd --type=f --exclude="dir_b/d*" . ./) di…

シェル芸160ノック4

シェル芸本の続きです。今回はシェルの機能を使おう!というセクションだったのでmanを探検するなどしました。 gihyo.jp 前回はこちら xztaityozx.hatenablog.com 問題16 $ n=XYZ;(for i in {A..C}; do n+=$i;echo $n;done);echo $n XYZA XYZAB XYZABC XYZ …