[英]Using awk to find an ip address and rearrange the line
我有一個充滿像這樣的行的文件稱為日志
19:56:52 12 Nov;Warning;em0;eth0;222.171.89.16;49.137.111.136;ICMP;;
08:35:51 00 Aug;That's odd;em0;eth0;142.53.155.238;252.1.134.24;ICMP;;
11:47:48 21 Jun;Look into this ;em1;eth0;50.219.1.59;56.95.45.60;UDP;16351;15354
我想使用awk找到包含我正在尋找的地址的行並重新排列它。
我的嘗試是
awk '/222.171.89.16/ {print $2,$3,$6,$4,$5,$1}' logs
只是給了我一行,因為我覺得awk需要被告知如何分離字符串所以,我嘗試使用FS
awk '/222.171.89.16/ {FS = ";"}; {print $2,$3,$6,$4,$5,$1}' logs
但這只適用於某些線路。 此外,我想在開頭說,如果IP地址來自第5列,它是出站的,如果它來自第6列,它是入站的。 所以數據應按此順序排列。 原諒我還必須做的表。
TYPE | IFACE | OFACE | PROT | SPORT | DPORT | DATE |
|------+---------+---------+------+-------+-------+-----------------|
| OUT | em0 | eth0 | ICMP | 0 | 0 | 08:35:51 00 Aug |
| OUT | | virbr0 | TCP | 24760 | 26014 | 07:08:48 18 Feb |
| IN | em2 | | ICMP | 0 | 0 | 21:54:43 06 Aug |
| OUT | virbr0 | | UDP | 29450 | 2501 | 00:46:27 04 Aug |
| IN | virbr0 | eth1 | ICMP | 0 | 0 | 06:29:02 20 Sep |
| IN | em0 | em0 | ICMP | 0 | 0 | 15:41:37 09 Nov |
| OUT | eth0 | virbr0 | UDP | 21879 | 3645 | 13:43:33 11 Nov |
| IN | em1 | em1 | UDP | 7699 | 18698 | 06:06:15 12 Oct |
| OUT | em1 | em0 | ICMP | 0 | 0 | 14:11:09 25 Aug |
| IN | em2 | em0 | UDP | 24814 | 31182 | 17:45:57 00 Dec |
| OUT | eth1 | em1 | UDP | 4915 | 18665 | 01:49:46 15 Oct |
---------------------------------------------------------------------
設置FS是正確的(默認是空格字符,但你需要';')
如果您正在尋找IP地址,您的正則表達式應該掩蓋點。
/222\.171\.89\.16/ .....
如果你想區分你可以寫的字段位置(而不是reg。表達式)
$5=="222.171.89.16" { print ....}
匹配出界的標准
通常,通過-F開關或BEGIN子句定義FS(如下所述)。 我的sample.awk沒有生成完整的輸出,但我想你可以把它作為一個起點。
$ awk -v IP=222.171.89.16 -f sample.awk yourfile
|OUT |em0 |eth0 |19:56:52 12 Nov|
$ cat sample.awk
BEGIN {
FS = ";" # Field separator
fmt = "|%-5s|%-5s|%-5s|%-15s|\n" # Output format
if (! IP) { # Check if an IP address has been provided
print "No IP address given! Exiting." > "/dev/stderr"
exit 1
}
}
# Test records and print formatted output
$0 ~ IP {
TYPE = $5 == IP ? "OUT" : "IN"
printf fmt, TYPE, $3, $4, $1
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.