这个sed命令的意思是什么?sed 's%^.*/%%'

4
我看到了一个bash命令sed 's%^.* /%%'
通常,sed的常见语法是sed 's/pattern/str/g',但是在这个命令中,它使用s%^.*作为's/pattern/str/g'中的s部分。
我的问题是:
s%^.*的意思是什么?
sed 's%^.*/%%'命令中第二部分中的%%是什么意思?
2个回答

11

%是一种替代分隔符,使您无需转义匹配部分中包含的正斜杠。

因此,如果您使用正斜杠作为分隔符编写相同的表达式,它将如下所示:

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

这也有点难以理解。

无论如何,该表达式将在一行中查找斜杠;如果存在斜杠,则删除包括该斜杠在内的所有内容。


2
是的。附加说明:它使用行中的最后一个斜杠。 - kmkaplan
值得注意的是,它的功能类似于 basename(没有后缀参数),但如果字符串以斜杠结尾,它将删除所有内容,而 basename 不会。 - Dennis Williamson

1

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

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

后一种方法推荐,因为它使您的命令简短而清晰


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接