Bash Linux:shell内置字符串匹配
我正试图更加熟悉linux中shell中的内置字符串匹配功能。我遇到了这个家伙,他举了个例子Bash Linux:shell内置字符串匹配,bash,parsing,shell,wildcard,Bash,Parsing,Shell,Wildcard,我正试图更加熟悉linux中shell中的内置字符串匹配功能。我遇到了这个家伙,他举了个例子 a="abc|def" echo ${a#*|} # will yield "def" echo ${a%|*} # will yield "abc" 我试过了,它做了广告宣传的事情,但我不明白$,{},#,*,|在做什么,我试着在网上或手册中寻找一些参考资料,但我什么也找不到。谁能给我解释一下这里发生了什么事吗?看一看 删除$substring的最短匹配项 从$string的后面 删除$
a="abc|def"
echo ${a#*|} # will yield "def"
echo ${a%|*} # will yield "abc"
我试过了,它做了广告宣传的事情,但我不明白$,{},#,*,|
在做什么,我试着在网上或手册中寻找一些参考资料,但我什么也找不到。谁能给我解释一下这里发生了什么事吗?看一看
删除$substring的最短匹配项
从$string的后面
删除$substring的最短匹配项
从$string前面开始
编辑:
我不明白$,{},#,*,是什么意思|
你在做什么
我建议你读一读
删除$substring的最短匹配项
从$string的后面
删除$substring的最短匹配项
从$string前面开始
编辑:
我不明白$,{},#,*,是什么意思|
你在做什么
我建议阅读说明#
操作符删除左侧的最短匹配,而%
操作符删除右侧的最短匹配
所以${a#*.}
返回
之后的所有内容,${a%.*}
返回
之前的所有内容
如果您遇到需要贪婪匹配的情况,您可以使用##
或%%
表示#
操作符删除左侧可能最短的匹配,而%%
操作符删除右侧可能最短的匹配
所以${a#*.}
返回
之后的所有内容,${a%.*}
返回
之前的所有内容
如果遇到需要贪婪匹配的情况,则应使用
##
或%%
通常,${somename}将替换已定义参数的内容:
mystring="1234567"
echo ${mystring} # produces '1234567'
%和#符号允许您添加修改默认行为的命令
星号“*”是一个通配符;而管道“|”只是一个匹配字符。让我用匹配字符'4'做同样的事情
mystring="1234567"
echo ${mystring#*4} # produces '567'
通常,${somename}将替换已定义参数的内容:
mystring="1234567"
echo ${mystring} # produces '1234567'
%和#符号允许您添加修改默认行为的命令
星号“*”是一个通配符;而管道“|”只是一个匹配字符。让我用匹配字符'4'做同样的事情
mystring="1234567"
echo ${mystring#*4} # produces '567'
这些特性和其他类似有用的特性在Bash参考手册的章节中有文档记录。这是另一个非常好的功能。这些功能和其他类似有用的功能在Bash参考手册的章节中有详细说明。这是另一个非常好的例子