2010-08-18 250 views
3

我看到一個bash命令sed 's%^.*/%%'這個sed命令的含義是什麼? SED的%^ */%%'

通常爲sed的常見語法是sed 's/pattern/str/g',但在這一個它曾經s%^.*'s/pattern/str/g's部分。

我的問題:
s%^.*是什麼意思?
sed 's%^.*/%%'第二部分%%的含義是什麼?

回答

11

%是一個替代分隔符,因此您不需要轉義匹配部分中包含的正斜槓。

所以,如果你寫與/作爲分隔符一樣的表情,它會看起來像:

sed 's/^.*\///' 

這也是有種難以閱讀。

不論哪種方式,表達式都會在一行中查找正斜槓;如果存在正斜槓,請刪除所有斜槓(包括斜線)。

+2

是的。附加說明:它使用* last *斜線。 – kmkaplan 2010-08-18 07:26:32

+0

另外值得注意的是,它的功能類似於'basename'(沒有後綴參數),只是如果字符串以斜線結尾而'basename'不會。 – 2010-11-23 01:44:48

1

通常使用的分隔符是/,用法是sed 's/pattern/str/'

有時您會發現模式中存在分隔符。在這種情況下,您可以選擇退出模式中的分隔符或使用不同的分隔符。在你的情況下,使用了不同的分隔符%

後面的方法是建議因爲它保持您的命令短而乾淨