我有一個檔案,我在那里轉儲我的防火墻日志。現在,我想從這個檔案中洗掉除IP地址以外的所有內容,以便我可以通過uniq -c來處理它們,以便快速瀏覽。由于條目長度不同,Cut不能用于此目的。因此,這似乎是grep的問題,但我不知道正確的語法是什么。 我想過濾的條目看起來像這樣。 SRC=Some-ipv6-address
。看起來最好的嘗試是
grep -w '^SRC'=[1-9:]*
但這只產生了空的結果。
一個輸入樣本:
[UFW BLOCK] IN=wp01 OUT= MAC=25:c5:a3:21:c1:7b:32:21:a9:3f:de:5e:21:aa
SRC=2b32:14f9:c210:27486:0100:0000:0000:0001
DST=1833:00b5:6f4b:7836:0f08:8ae5:87b3:4d04 LEN=60
tc=0 hoplimit=52 flowlbl=10001 proto=tcp
SPT=80 DPT=56020 WINDOW=0 RES=0x00 RST URGP=0
而所需的輸出:
2b32:14f9:c210:27486:0100:0000:0000:0001
但是你可能必須包括SRC=來區分目的地和源頭,然后用cut切掉SRC部分。
有誰知道正確的語法?
有誰知道正確的語法?
uj5u.com熱心網友回復:
一個選擇是使用sed與一個捕獲組,并在替換中使用該組。
sed -nE 's/^SRC=([a-fA-F0-9:] )/1/p' file
輸出
2b32:14f9:c210:27486:0100:0000:0000:0001
模式匹配
^字串的開始SRC=匹配字面意思([a-fa-f0-9:] )捕獲組1匹配1次以上的字符類中的任何字符
在sed命令中:
-n默認不列印每一行/p列印被替換的文本 。
1指的是第1組中的捕獲值 。
uj5u.com熱心網友回復:
在每個Unix盒子的任何shell中使用任何sed或awk:
。$ sed -n 's/^SRC=/p' file
2b32:14f9:c210:27486:0100:0000:0000:0001
$ awk 'sub(/^SRC=/,"" ) ' 檔案
2b32:14f9:c210:27486:0100:0000:0000:0001
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/318322.html
標籤:
