2010-08-18 270 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/'

有时您会发现模式中存在分隔符。在这种情况下,您可以选择退出模式中的分隔符或使用不同的分隔符。在你的情况下,使用了不同的分隔符%

后面的方法是建议因为它保持您的命令短而干净