awk要擷取資訊會亂掉 - Linux

Freda avatar
By Freda
at 2016-08-23T20:50

Table of Contents

https://www.space.ntu.edu.tw/navigate/s/169EE84AFE094594B31CA1F7ADDEDE1DQQY
上面是我的LOG取出有問題的部分,

我想抓出source的IP的前2碼然後sort + uniq計算次數
所以我用
grep 'SRC=[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*' \
/tmp/test.txt|sed 's/^.*SRC=//g'|awk '{FS="."} {print $1"."$2}'|sort|uniq -c

結果跑出的是

2 62.210
1 62.210.12.127.DST=10.2.7.1

後來我往前回推

grep 'SRC=[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*' \
/tmp/test.txt|sed 's/^.*SRC=//g'|awk '{FS="."} {print $1}'

62.210.12.127
62
62

grep 'SRC=[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*'
/tmp/test.txt|sed 's/^.*SRC=//g'

62.210.12.127 DST=10.2.7.1 LEN=40 TOS=0x00 PREC=0x00 TTL=240 I...
62.210.12.127 DST=10.2.7.1 LEN=40 TOS=0x00 PREC=0x00 TTL=240 I...
62.210.12.127 DST=10.2.7.1 LEN=40 TOS=0x00 PREC=0x00 TTL=240 I...

看起來awk無法把其中一筆的分隔給判斷好,但是問題在於IP用"."
分隔沒錯啊!請問是哪裡有問題?

--
最近你的吸引力將大幅上漲,周遭的異性將慢慢的被你迷惑,慢慢的開始愛上你......。

唯一美中不足的是───────那群異性中有一半以上是齧齒目,其餘的則是爬蟲類。


或是你也可以換個樂觀的角度───愛上你的只有不到一半是爬蟲類,其餘都是齧齒目。

--
Tags: Linux

All Comments

Frederic avatar
By Frederic
at 2016-08-25T14:53
我認真建議這種稍稍複雜的parsing 不要用 shell
用個 python 或 perl 都簡單數倍
Puput avatar
By Puput
at 2016-08-26T13:08
awk 'BEGIN{FS="."} {print $1"."$2}'
Sandy avatar
By Sandy
at 2016-08-29T18:36
請問這樣會複雜嗎?我目前只有學vbird教的手法而已
Barb Cronin avatar
By Barb Cronin
at 2016-08-30T09:15
@yvb:謝謝成功了,請問問題是出在哪裡?
Valerie avatar
By Valerie
at 2016-09-02T20:43
或者 awk -F "." '{print $1"."$2}' 也可以.
Joseph avatar
By Joseph
at 2016-09-05T10:24
問題在於預設先用空白斷完句了,你才設定FS,所以第二列才生效.
Sierra Rose avatar
By Sierra Rose
at 2016-09-09T00:17
而用BEGIN{}就是未讀入資料時就先執行了,或直接指定-F即生效.
Jake avatar
By Jake
at 2016-09-09T23:32
感謝指點
Hazel avatar
By Hazel
at 2016-09-13T08:32
如果只要類似的效果是不是可以寫短一點?
grep -Eo 'SRC=([0-9]+\.){2}' test.txt|sort|uniq -c
Hardy avatar
By Hardy
at 2016-09-15T09:23
或中間再多一個| grep -Eo '[0-9]+\.[0-9]+' |
Mia avatar
By Mia
at 2016-09-20T05:15
我還沒測試,不過我想soem說的是正確的。其實我是把過去
運作正常的指令不斷擴增才變這樣的。
Damian avatar
By Damian
at 2016-09-23T01:25
最初始只有把LOG中的IP抓出來這樣XD
好像演化論的痕跡器官XD

rsync可以計算「預計」傳輸的量嗎?

Joseph avatar
By Joseph
at 2016-08-21T09:37
我目前會用rsync -anv 的dry run看有哪些檔案被操作,但是無法預估實際 大小的總量 sent 2801951 bytes received 9125 bytes 224886.08 bytes/sec total size is 444584135541 speedup is 15815 ...

GNOME桌面環境的硬體需求

Gary avatar
By Gary
at 2016-08-20T10:42
我現在的工作機是拿之前打電動的主機來用 cpu是不帶內顯的 Intel® Xeon(R) CPU E3-1231 v3 at 3.40GHz × 8 顯卡是 GeForce GTX 970/PCIe/SSE2 使用Centos 7帶GNOME 3.14的桌面環境 剛安裝完如果不裝顯卡驅動程式,用內 ...

在docker container裡用child_process.execSync

Aaliyah avatar
By Aaliyah
at 2016-08-20T05:23
請問各位我有一個docker container裡裝node跑一個小小的測試JS檔, 當我進入docker container跑都沒問題, 但是如果用docker exec的command卻會發生錯誤 我猜是在docker container外部執行無法取的子進程. 有人有任何經驗如何解決嗎 我在docker ...

dd完的 image 分配問題

Genevieve avatar
By Genevieve
at 2016-08-19T16:27
小弟有一顆500GB 的硬碟 現在dd 一個image 2GB左右 在linux下 dt指令看到 sda size 465.8G type disk --sda1 size 2.1G type part --sda15 size 99M type part 想請教的問題是 我想把sda1 ...

shell script何控制外面?

William avatar
By William
at 2016-08-18T22:21
如題 shell script要如何對外面有作用 好比我這樣寫test.sh #!bin/sh cd .. cd .. cd .. 然後執行bash test.sh 沒有任何事情發生 -- 作者: fleece (...) 看板: KoreanPop 標題: [問題] 請問一個叫O.S.T的歌手 ...