wiki:Shell芸いろいろ

Version 9 (modified by admin, 7 years ago) ( diff )

--

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'

Note: See TracWiki for help on using the wiki.