電波ビーチ

☆(ゝω・)v

「数列の差集合を取る」shell script

さっき生まれて初めてseq コマンドの存在を知ったので。

s1=`seq 0 12`; s2=`seq 3 7`
(echo $s1 $s2 | sed -e 's/\s/\n/g' | sort -u; echo $s2 | sed -e 's/\s/\n/g') | sort | uniq -u

むかしこれに近いことするためわざわざpython書いた気がする。確かそんときは 「ランダムな数値をn個欲しいが、ある範囲に含まれる数値は除く」 とかだったので、時を越えて今シェルで実現してやろう。shufheadを使って、こうじゃ

s1=`seq -20 20`; s2=`seq -5 10`
(echo $s1 $s2 | sed -e 's/\s/\n/g' | sort -u; echo $s2 | sed -e 's/\s/\n/g') | sort | uniq -u | shuf | head -5

-11
-6
12
18
-7

参考(理屈がいまいちわからんけど)

kunst1080.hatenablog.com