Shell芸でためになるうリンク集 よく使う 9 つの便利なシェル芸 http://qiita.com/b4b4r07/items/8c1911092002d0b457a6 シェルだけで色々こなす、便利なシェル芸 http://qiita.com/yuya_presto/items/d1a50565f187c7c8ec76 シェル芸勉強会問題一覧 https://blog.ueda.asia/?page_id=684 シェル芸初心者向け勉強会:ウォーミングアップ問題(問題と解答) https://gist.github.com/papiron/eb3fc90f86c6167b2b1c == 2016/10/29 福岡サテライト会場勉強会 == {{{  柴田さん  FPGA  宮崎さん  福祉施設 ソフト 大分  なりあ愛さん WEB開発  成林さん   学生さん   }}} 最後から2番目を表示する。 {{{ awk '{print $(NF-1)}' access.log_.shellshock }}} 転送バイト数を合計する。 {{{ awk ' $1=="unicomp6.unicomp.net" { print $NF} ' access_log.nasa | xargs | tr " " "+" | bc }}} Grepはawkの5倍は早い パイプを使うとマルチコアで動いてくれる。 2文字から12文字を切り取る {{{ grep "01/Jul/1995" access_log.nasa | awk '{ print $4 }' | cut -c2-12 | head grep "01/Jul/1995" access_log.nasa | awk '{ print $4 }' | cut -d’’-f 4 | head grep "/Jul/1995" access_log.nasa | awk '{ print $4 }' | cut -c2-12 | uniq -c http://qiita.com/bezeklik/items/f5c292c4360cde140bef nslookup www.usptomo.com | grep Address | awk '{ print $2 }' | tail -1 echo 'ひらけ!ポンキッキ' | gsed 's/.*/&&&&&&&&&&/;s/.\{10\}/&\n/g' | sed 's/.$//' echo 'ひらけ!ポンキッキ' | sed 's/.*/&&&&&&&&&&/;s/.\{10\}/&\n/g' | sed 's/.$//' for i in {0..8}; do echo "ひらけ!ポンキッキ" | sed -E "s/^(.{$i})(.*)/\2\1/" ; done; https://github.com/b4b4r07/dotfiles/blob/master/doc/misc/commands.txt cat crypt | xxd -r -p | iconv -f UTF-16LE -t UTF-8 seq $(date -d"20161029" +%s) $(date -d"20161030" +%s) | factor | awk '(NF<3){print $1}' gnuplot <(echo -e 'set terminal dumb\nplot sin(x)') ローカルの1ファイルと、リモートサーバにある1ファイルの差分チェック $ ssh 192.168.1.1 "cat /usr/local/apache2/conf/extra/httpd-mpm.conf" | diff - ./httpd-mpm.conf これは基本。ユーザ名を付ける時は、"username@192.168.0.1"とか指定してください。(><) ローカルの1ファイルと、複数のリモートサーバそれぞれにある1ファイルの差分をチェック $ for i in `seq 1 10`; do IP=192.168.1.${i}; echo "-----${IP}-----"; ssh ${IP} "cat /usr/local/apache2/conf/extra/httpd-mpm.conf" | diff -c - ./httpd-mpm.conf; done ローカルに存在する httpd-mpm.conf と、192.168.1.1 ~ 192.168.1.10のサーバに存在する /usr/local/apache2/conf/extra/httpd-mpm.conf を diff -c で比較。 ローカルにある特定ディレクトリの複数ファイル(一部除外)と、リモートサーバの特定ディレクトリに存在する複数ファイルにおいて、各ファイルの差分をチェック $ for p in `find ./ -name '*.conf.20*' -prune -o -type f -print`; do echo "-----${p}-----"; ssh 192.168.1.1 "cat /usr/local/apache2/conf/${p}" | diff -c - ${p}; done ローカルに存在するカレントディレクトリ(./)に存在する複数ファイル('*.conf.20*'のルールを除く全ファイル)と、192.168.1.1 のサーバに存在する /usr/local/apache2/conf/ ディレクトリ以下の複数ファイルそれぞれとの差分を diff -c でチェック サーバ間でdiffをとる方法 2014/03/18 複数サーバ間の設定ファイルを比較したいときはこうすればよいです。 ローカルファイルとリモートサーバのファイルを比較 $ ssh remotename cat /etc/hosts | diff /etc/hosts - こういう書き方もあります。 $ diff <(ssh remotename cat /etc/hosts) /etc/hosts リモートサーバ間のファイルを比較 $ diff <(ssh remote1 cat /etc/hosts) <(ssh remote2 cat /etc/hosts) $ seq 0 86399 | while read n; do gdate -d "2016-10-29 00:00:00 $n sec" '+%s'; done $ for n in {0..86399}; do gdate -d "2016-10-29 00:00:00 $n sec" '+%s'; done $ seq 0 86399 | xargs -I@ gdate -d '2016-10-29 00:00:00 @ sec' '+%s' seq 1 30 | awk '{a=sin($1/3)*10 + 10;for(i=1;i