2011-06-08 21 views
2

已經嘗試了一些「解壓到某個角色」的問題,但都沒有成功。 在grep的使用這個-o從perforce輸出中提取倉庫路徑

例如輸入: //blah/blah/foo.txt#7 - 編輯變化12526(text)通過等等@等等

我想: //胡說/blah/foo.txt

現在我用正則表達式 '/ [^#] * /' 但我得到 //等等/等等/

+1

什麼工具? Perl的?紅寶石?蟒蛇? grep的?你真的需要提供更多的信息 – Nemo 2011-06-08 02:56:01

+0

對不起,這只是使用grep – Th3sandm4n 2011-06-08 03:09:19

回答

5

grep不使用斜槓來分隔模式,所以斜線正好相符。

嘗試:

echo '//blah/blah/foo.txt#7 - edit change 12526 (text)' | grep -o '/[^#]*' 

注意,如果「文本」中有一個斜槓,這部分也將匹配,並因此將grep -o打印。所以,我會去像這樣的東西:

echo '//blah/blah/foo.txt#7 - edit change 12526 (text)' | sed 's/#.*//' 

(這兩個假設沒有#在你的文件名,當然)

+0

這樣做,謝謝。 #後面的文字不應該有斜線:) – Th3sandm4n 2011-06-08 03:18:34

0

試試這個:/^.*(?=#)/它使用一個(非消費)預見性

+0

nope,可能是因爲即時通訊在grep中使用它? – Th3sandm4n 2011-06-08 03:15:51

1

使用cut

<whatever it takes to get your output> | cut -f1 -d"#"

所以,如果你是一個grepping文件或類似的東西的內容。

grep -o "whatever text" inputFile | cut -f1 -d"#"

-d"#"裝置使用 「#」 作爲分隔符,-f1意味着第一個字段。