2行を1行に纏めてひっくり返す | ミンキームーンネットワーク

2行を1行に纏めてひっくり返す

Session status: UP-ACTIVE
Peer: 192.168.1.1
こんな表示を
192.168.1.1,UP-ACTIVE
にしたい場合
#!/bin/sh
grep “Session status: ” -A 1 testlog.txt | grep -v -e “–” | sed ‘s/^M//’ | sed
-n -f sed.txt | sort
で、sed.txtは
{
N
s/Session status: //
s-Peer: \(.*\)/.*-\1-
s/^\(.*\)\n\(.*\)/\2,\1/
p
}
とすればOK
単に自分でも忘れそうだから、仕事の覚え書きw

コメント

  1. しゃ より:

    じゃあ漏れはこれで、”cat testlog.txt |sort|tr ‘\n’ ‘,’|sed ‘s/\(Peer: \|Session status: \)//g;s/,$/\n/'”

  2. しゃ より:

    ああこれじゃ複数あるとダメか。

  3. ぱる より:

    そう、実データはこれが繰り返される複数行なのよw

  4. ぱる より:

    ついでに
    sort -t . -k 1,1n -k 2,2n -k 3,3n -k 4,4n
    これでIPアドレス順に並べ替え。

  5. しゃ より:

    んじゃこんで。”cat source.txt |grep ‘Session status’ -A 1|tr ‘\n’ ‘,’|sed -e ‘s/\(Session status: \)/\n/g;s/\([A-Z,-]*\),Peer: \([1-9]*\.[1-9]*\.[1-9]*\.[1-9]*\)/\2:\1/g;y/:,/,\n/’|tr -s ‘\n'”・・・長くなったかw

  6. しゃ より:

    んじゃこんで。”cat testlog.txt |grep ‘Session status’ -A 1|tr ‘\n’ ‘,’|sed -e ‘s/\(Session status: \)/\n/g;s/\([A-Z,-]*\),Peer: \([1-9]*\.[1-9]*\.[1-9]*\.[1-9]*\)/\2:\1/g;y/:,/,\n/’|tr -s ‘\n'”・・・長いw