我看到一個複雜的文本文件,其中包含大約300個條目。 我不知道如何去解析這個文件來獲得我想要的輸出。 我的每個網絡用戶在文件中都有一個條目。在Bash中使用數組和Sed以及Awk解析文本文件
USER:martha
USER:Othello
USER:darwin
再下面,是我需要信息的主機文件中的每一用戶項,但一個用戶可以有一個入口,另一個可得:所以在文本文件中,每個用戶名稱開頭多個條目。下面是3個這樣的條目
USER:martha
POSITION: 170.198.82.13 [VLT(304394),PT(FULL)]
CLIENT: jcrm19.1.p2ps -258-
ACCESSPOINT: 170.198.82.13/net
APPLICATION: 91
USER:othello
POSITION: 170.198.80.212 [VLT(307571),PT(FULL)]
CLIENT: jcrm15.1.p2ps -258-
ACCESSPOINT: 170.198.80.212/net
APPLICATION: 256
CLIENT: jcrm15.1.p2ps -258-
ACCESSPOINT: 170.198.80.212/net
APPLICATION: 256
POSITION: 170.198.80.209 [VLT(306561),PT(FULL)]
CLIENT: jcrm14.1.p2ps -258-
ACCESSPOINT: 170.198.80.209/net
APPLICATION: 256
CLIENT: pwrm14.1.p2ps -258-
ACCESSPOINT: 170.198.80.209/net
APPLICATION: 256
CLIENT: pwrm14.1.p2ps -258-
ACCESSPOINT: 170.198.80.209/net
APPLICATION: 256
USER:darwin
POSITION: 170.198.19.102 [VLT(297987),PT(FULL)]
CLIENT: jcrm16.1.p2ps -258-
ACCESSPOINT: 170.198.19.102/net
APPLICATION: 91
最終的輸出應如下的例子:
USER Position Client Application
Martha 170.198.82.13 jcrm19 91
Othello 170.198.80.212 jcrm15 256
Othello 170.198.80.209 jcrm14 256
Martin 170.198.19.102 jcrm16 91
我有數組的一些經驗,我可以用grep出一些信息,並分配給變量,打印它們。但我不知道如何將信息讀入陣列,作爲每個「USER」下的條目,因爲它們具有不同的長度和內容。
所以我怎麼讀用戶:martha然後跳轉到用戶:othello?此外,在用戶:othello有兩個「位置」,我需要抓住。我只是不知道如何把我正在尋找的內容放入數組變量或常規變量中。我從來不必解析每次使用時長度和內容數據不同的文件。不知道在我開始閱讀和爲下一個用戶分配數值或值之前,我必須閱讀多少行>能否提供一些提示或可能是我可以從頭開始的一段代碼?
感謝
OP只是想用'POSITION'來選擇塊,你打印每個塊的條目 – Kent
@Kent哦,是的,你說得對,謝謝。我會讓他選擇你和anubhava的答案。 –
嗨馬克。我試過你的班輪,工作很好。不知道它如何工作,但它的工作原理。所以謝謝。我真的必須瞭解這個職位的工作原理。當我將它與原始日誌文件進行對比時,它也生成了額外的數據列......但這很好。/ – theuniverseisflat