この問題を解決するためにスクリプトを作成しようとしています。
Mikrotik01#show unique routing entry | 192.168.255.232 | inc ID
Thu June 10 15:21:32.808 CST
Unique Entry: 192.168.255.21
Unique Entry: 192.168.255.233
Unique Entry: 192.168.255.155
Mikrotik01#show unique routing entry | 192.168.255.233 | inc ID
Thu June 10 15:21:33.079 CST
Unique Entry: 192.168.255.234
Unique Entry: 192.168.255.232
Mikrotik01#show unique routing entry | 192.168.255.234 | inc ID
Thu June 10 15:21:33.347 CST
Unique Entry: 192.168.255.233
Unique Entry: 192.168.255.235
以下を含むCSVに変換:
192.168.255.232,192.168.255.21,192.168.255.233,192.168.255.155
192.168.255.233,192.168.255.234,192.168.255.232
192.168.255.234,192.168.255.233,192.168.255.235
デフォルトでは、最初の行から新しい行を開始し、「Mikrotik」ホスト名を含む次の行に達するまで、同じ行にコンマを使用して隣接する各ルーターIDを追加します。ここで新しい行を作成し、完全な実行を続けます。ファイル。最終結果はcsvです。
答え1
awk -F'[[:blank:]|]+' '
/^Mikrotik01/ {if (NR>1) print ""; printf "%s", $(NF-2)}
/Unique Entry/ {printf ",%s", $NF}
END {print ""}
' file.txt > File.csv
答え2
最初の終了時にsed
-scriptになることがあります。
sed -E '
/Mikrotik01/{s/.* ([0-9.]{7,}) .*/\1/;x;/^$/!b}
/[0-9.]{7,}/!d
s/.* ([0-9.]{7,}).*/\1/
x
G
s/\n/,/
h
$!d' file.txt > file.csv
または(少し短いかもしれませんが強力ではありません。not |
byで改行ブロックを認識しますMikrotik01
)
sed -E '
/^T/d
s/^[^.]*[|:] //
/ \|.*$/{s///;x;/^$/!b}
x
G
s/\n/,/
$!{h;d}' file.txt > file.csv
(同じ作業を2回行ったのでx
)単純化できますが、s/
今はどうなるか想像できません。