たいちょーの雑記

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

shellgei160

シェル芸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ノック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 …

シェル芸160ノック3

9月末ごろに発売されたシェル芸本。手を付けられていなかったのですがようやく落ち着いた感があるので少しずつ解答して行こうと思います。サクッと行きます。 gihyo.jp 前回はこちら xztaityozx.hatenablog.com 問題12 #!/bin/bash ARG="${1:-$(cat)}" echo …

シェル芸160ノック2

9月末ごろに発売されたシェル芸本。手を付けられていなかったのですがようやく落ち着いた感があるので少しずつ解答して行こうと思います。サクッと行きます。 前回はここ gihyo.jp 問題6 $ echo {{{{_,}_,}_,}_,}'*' | fmt -1 | tr _ ' ' * * * * * 問題7 $ …