2017-06-06 13 views
0

我有產生與路徑的隨機輸出在它 和命令我需要使用AWK提取此路徑。 路徑總是以開始之前結束相同的模式(讓我們假設它總是與/根開始),但其餘的可以改變使用AWK以匹配PATH開始/根/和字符「

例如:

error reason 05/30/2017 12:18:37 [74575:45687]: "/root/this/is/my/path/" random text random text random text random text random text random text 

提取/根/這/是/我的/路徑/:我一直在使用tryed grep + awk的方式如下:

command.sh | grep error |awk '/root/{mypath=$6}'. 

但是我後來發現我的路並不總是處在同一個地方。更重要的是,我不想提取雙引號。

i need to have /root/this/is/my/path/ not "/root/this/is/my/path/" 

任何人都可以幫忙嗎?

+0

試'的grep -OP「\ d {5}:\ d {5}]:「\ K [ ^「] +'' –

回答

0

一個簡單的方法可能會採用:

command.sh | awk -F\" '/^error/{ print $2}' 

輸出:

/root/this/is/my/path/ 
+0

謝謝你們各位的答案,我喜歡第三個答案,因爲它非常簡單。 前兩個看起來很有趣,但現在對我來說非常複雜。我反正會研究它們並試圖理解它們的作用。 –

+0

感謝您的支持。請檢查並接受我的回答。 :) – CWLiu

0

這也應該工作:

command.sh | awk '/^error/{ for (i = 1; i <= NF; i++) if ($i ~ /^"/){ gsub(/"/, "", $i); print $i} }' - 

輸出:

/root/this/is/my/path/ 
0

AWK溶液:

command.sh | awk '/^error/{ match($0,/\/root[^"]+/); print substr($0,RSTART,RLENGTH) }' 

輸出:

/root/this/is/my/path/ 
相關問題