正则表达式的解释



以下正则表达式是什么意思?

fspec="/exp/home1/abc.txt"
fname="${fspec##*/}"

我知道它做什么,但不知道它是如何做的?我不清楚获取 fname。

请解释一下。

${var##*/}语法将所有内容剥离到最后一个/

$ fspec="/exp/home1/abc.txt"
$ echo "${fspec##*/}"
abc.txt

一般来说,${string##substring}$string前面剥离最长的$substring比赛.

为了进一步参考,您可以例如检查 Bash 字符串操作 有几个解释和示例。

以下是 bash 文档中的解释。

${parameter#word}
${parameter##word}
The  word  is  expanded  to  produce  a pattern just as in pathname
expansion.  If the pattern matches the beginning of  the  value  of
parameter,  then  the result of the expansion is the expanded value
of parameter with the shortest matching pattern (the ``#'' case) or
the longest matching pattern (the ``##'' case) deleted.  

根据上面的解释,在您的示例中 word=*/表示零(或)以 / 结尾的任意数量的字符。

bash-3.2$fspec="/exp/home1/abc.txt"
bash-3.2$echo "${fspec##*/}"   # Here it deletes the longest matching pattern
# (i.e) /exp/home1/
# Output is abc.txt
bash-3.2$echo "${fspec#*/}"    # Here it deletes the shortest matching patter
#(i.e) /
# Output is exp/home1/abc.txt
bash-3.2$

相关内容

  • 没有找到相关文章

最新更新