sed & awk

こんな感じの内容がいっぱい書かれた複数のXMLファイルから、

<host>
  <address>192.168.10.1</address>
  <name>linux-server</name>
  <information>Windows 2000 Pro</information>
  <room>My Room</room>
  <maintainer>me</maintainer>
</host>

IPアドレスだけを取り出してファイルに出力する、1行シェルスクリプト

$ grep address 192.168.10.* | sed -e 's/:/ /' | awk '{print $2}' | sed -e 's/<address>//' | sed -e 's/<\/address>//' > ~/ips.txt

出力されたファイルの内容はこんな感じ。

192.168.10.1
192.168.10.2
192.168.10.3
...
192.168.10.100
192.168.10.110
192.168.10.120

sedを3度も使っているところが気になる。もっと短くかけそうな気もしたけど、sedawkのマニュアルを読むのがめんどくさかったので、これでOKてことにした。
でも、sedawkを使いこなせるようになるといいな。