看板 Linux 關於我們 聯絡資訊
我有格式如下的資料 Client dropped connection 52013 Compression error 2 Deactivating 1242 FTP error 0 FTPS not configured 174 Flow expired (sweeper) 2164495 我需要把資料重組成這樣的格式 sometext,type=Client_dropped_connection value=52013 sometext,type=Compression_error value=2 ... ... ... 由於前面文字的部份每列欄位數非固定,透過awk拆解使用下列的語法 awk 'BEGIN{FS = "[ \t]+" ;ORS = "_"} {for(i=1;i<NF;i++) {print $i,"\n"}}' 原本預期能夠將前面的文字重組成類似這樣 -> Client_dropped_connection 結果輸出結果卻是像下面這樣 Client _dropped _connection _Compression _error _Deactivating _FTP _error _FTPS _not _configured _Flow _expired _(sweeper) 不加 "\n" {print $i,"\n"} 輸出的結果卻是所有的字都在同一行 試過幾種方法都得不出我想要的結果 不知道是語法哪邊出錯? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 211.21.108.113 ※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1527739446.A.747.html
goldie: 試試 https://pastebin.com/0aNMysRx 05/31 12:59
xyzman: 輸出的結果是每一行都是sometext,type= value= 05/31 13:09
xyzman: 不過又給我一個方向了,我再試試,謝謝! 05/31 13:10
goldie: 我用的是 gawk (GNU) 的版本 05/31 13:21
xyzman: 我在我的環境後來改成這樣才正常顯示 05/31 14:02
xyzman: https://pastebin.com/RCvhCNdn 05/31 14:02
xyzman: 在我的環境中正規化比對有加$,會比對不到 05/31 14:03
xyzman: gsub在比對空格取代成底線的符號,用大大的語法match不到 05/31 14:05
xyzman: 感謝goldie!! 05/31 14:07
goldie: 恭喜成功!題外話,PTT另有 RegExp 板 05/31 19:08