Gawk und regExp
Hallo,
ich habe von tcpdump folgende Ausgabe in einem File stehen:
Dieses möchte ich nun aufsplitten wie folgt:
Mittels
bekomme ich zumindest schon mal eine Aufsplittung nach Leerzeichen. Ich denke, dass es aber sinnvoller wäre mit Wortsuchen zu arbeiten, falls die Reihenfolgen sich mal ändern. Nur wie stelle ich das am Geschicktesten an? Muss ich dann noch grep bemühen und wie würde es aussehen?
Gruß
ich habe von tcpdump folgende Ausgabe in einem File stehen:
1327412193.651818 IP (tos 0x0, ttl 64, id 21615, offset 0, flags [DF], proto TCP (6), length 60) 172.16.144.130.44529 > host.sunrpc: S, cksum 0xe4b3 (correct), 2129017670:2129017670(0) win 5840 <mss 1460,sackOK,timestamp 1208105 0,nop,wscale 7>
1327412193.652429 IP (tos 0x0, ttl 63, id 0, offset 0, flags [DF], proto TCP (6), length 60) host.sunrpc > 172.16.144.130.44529: S, cksum 0xac67 (correct), 2314354817:2314354817(0) ack 2129017671 win 5792 <mss 1460,sackOK,timestamp 1234510951 1208105,nop,wscale 2>
1327412193.652445 IP (tos 0x0, ttl 64, id 21616, offset 0, flags [DF], proto TCP (6), length 52) 172.16.144.130.44529 > host.sunrpc: ., cksum 0xf1a0 (correct), 1:1(0) ack 1 win 46 <nop,nop,timestamp 1208105 1234510951>
1327412193.652513 IP (tos 0x0, ttl 64, id 21617, offset 0, flags [DF], proto TCP (6), length 112) 172.16.144.130.44529 > host.sunrpc: P 1:61(60) ack 1 win 46 <nop,nop,timestamp 1208105 1234510951>
1327412193.653142 IP (tos 0x0, ttl 63, id 25829, offset 0, flags [DF], proto TCP (6), length 52) host.sunrpc > 172.16.144.130.44529: ., cksum 0xebea (correct), 1:1(0) ack 61 win 1448 <nop,nop,timestamp 1234510951 1208105>
1327412193.653266 IP (tos 0x0, ttl 63, id 25830, offset 0, flags [DF], proto TCP (6), length 84) host.sunrpc > 172.16.144.130.44529: P 1:33(32) ack 61 win 1448 <nop,nop,timestamp 1234510951 1208105>
1327412193.653279 IP (tos 0x0, ttl 64, id 21618, offset 0, flags [DF], proto TCP (6), length 52) 172.16.144.130.44529 > host.sunrpc: ., cksum 0xf144 (correct), 61:61(0) ack 33 win 46 <nop,nop,timestamp 1208105 1234510951>
1327412193.653341 IP (tos 0x0, ttl 64, id 21619, offset 0, flags [DF], proto TCP (6), length 52) 172.16.144.130.44529 > host.sunrpc: F, cksum 0xf143 (correct), 61:61(0) ack 33 win 46 <nop,nop,timestamp 1208105 1234510951>
1327412193.653360 IP (tos 0x0, ttl 64, id 25547, offset 0, flags [DF], proto TCP (6), length 60) 172.16.144.130.972 > host.hello-port: S, cksum 0xba95 (correct), 2138115298:2138115298(0) win 5840 <mss 1460,sackOK,timestamp 1208105 0,nop,wscale 7>
1327412193.653957 IP (tos 0x0, ttl 63, id 0, offset 0, flags [DF], proto TCP (6), length 60) host.hello-port > 172.16.144.130.972: S, cksum 0xec07 (correct), 2304628567:2304628567(0) ack 2138115299 win 5792 <mss 1460,sackOK,timestamp 1234510951 1208105,nop,wscale 2>
Dieses möchte ich nun aufsplitten wie folgt:
time, ip transmitter, ip receiver, port, protcol, packet length,
Mittels
BEGIN {
FPAT = "([^ ]+)"
}
{
print "NF = ", NF
for (i = 1; i <= NF; i++) {
printf("$%d = <%s>\n", i, $i)
}
}
bekomme ich zumindest schon mal eine Aufsplittung nach Leerzeichen. Ich denke, dass es aber sinnvoller wäre mit Wortsuchen zu arbeiten, falls die Reihenfolgen sich mal ändern. Nur wie stelle ich das am Geschicktesten an? Muss ich dann noch grep bemühen und wie würde es aussehen?
Gruß
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 179456
Url: https://administrator.de/contentid/179456
Ausgedruckt am: 22.11.2024 um 05:11 Uhr
1 Kommentar