2014-02-27 44 views
0

所以我有一個文件中的以下內容:不輸出第一grep的搜索詞

JAVA_OPTS="-Djavax.net.ssl.trustStore=/home/blah/blah.jks -Djavax.net.ssl.trustStorePassword=password" 

,我使用下面的命令:

cat file.txt | grep -Eo "Store=[^ ]*.jks" 

並獲得

Store=/home/blah/blah.jks 

我該怎麼辦才能得到:

/home/blah/blah.jks 
+0

可能重複的[如何刷出可以改變的子字符串?](http://stackoverflow.com/questions/15340835/how-to-grep-out-substring-which-can-change) – tripleee

回答

2

您可以使用perl擴展中的\K

$ grep -oP 'Store=\K[^ ]*.jks' file.txt 
/home/blah/blah.jks 
3

使用sed,而是和編輯的飛行比賽:

sed -rn 's/^.+Store=([^ ]*.jks).*$/\1/p' file.txt 

-n選項禁止印刷,以及p命令替換切換回來後,但只適用於符合條件的行。 -r選項意味着一個更易於使用的正則表達式引擎。

順便說一句。不要將cat放入這些Unix實用程序(grep,sed,tr,awk等)中。它們都將文件名理解爲最後的參數。一個過程總是優於兩個過程。