I saw a bash command sed 's%^.*/%%'
Usually the common syntax for sed is sed 's/pattern/str/g'
, but in this one it used s%^.*
for the s
part in the 's/pattern/str/g'
.
My questions:
What doess%^.*
mean?
What's meaning of %%
in the second part of sed 's%^.*/%%'
?The %
is an alternative delimiter so that you don't need to escape the forward slash contained in the matching portion.
So if you were to write the same expression with /
as a delimiter, it would look like:
sed 's/^.*\///'
which is also kind of difficult to read.
Either way, the expression will look for a forward slash in a line; if there is a forward slash, remove everything up to and including that slash.
the usually used delimiter is /
and the usage is sed 's/pattern/str/'
.
At times you find that the delimiter is present in the pattern. In such a case you have a choice to either escape the delimiter found in the pattern or to use a different delimiter. In your case a different delimiter %
has been used.
The later way is recommended as it keeps your command short and clean.
精彩评论