せっかくなので貼ってみる

行数固定のところとか、awk使ってるとか、空行消すとことか、インデントとか、全然スマートさが感じられないけど。ちなみにdiffはいつもcolordiffにaliasしてたのでawkでなかなかマッチしなくてはまったので\を入れといた。 sed -e '/\000/d' -e '/\0a/d' -e '/^$/d'とかしてコマンド一個(trでもいいんだけど) にしたいけどうまくいかない。

#!/bin/sh
expect > ~/tmp/router_new.log << EOS
spawn telnet 192.168.0.1
expect login
send -- "admin\r\n"
expect "Password: "
send -- "yourpassword\r\n"
expect ">"
send -- "show log sys\r\n"
expect "\r\n\r\n\r\n"
send -- "exit\r\n"
EOS
cat ~/tmp/router_new.log | cut -d"
" -f14-414 |  tr -s '[\r\000]' '\n' > ~/tmp/router_new.log
\diff -a  ~/tmp/router{_new,}.log|grep -v "^<" | cut -d" " -f2- > ~/tmp/router_diff.log
cat ~/tmp/router_{new,diff}.log >~/tmp/router.log