ksh shell脚本查找字符串中_的第一个匹配项并删除所有内容,直到

PKR

我是Shell脚本的新手。使用KSH Shell。你能帮我这个忙吗?

我的字符串就像errorfile101_ApplicationData_2_333.txt。我想删除所有内容,直到_首次出现。

我的输出应该是ApplicationData_2_333.txt

剥壳机

假设您可以将字符串分配给变量,这是一个简单的方法,即

str="errorfile101_ApplicationData_2_333.txt"
echo ${str#*_}

输出

ApplicationData_2_333.txt

#在操作者${str#*_}的装置从所述变量的值的左侧删除以下图案。

还有##,它从左侧删除最长的匹配项,这将为您提供

333.txt

也有类似的删除运算符,用于从字符串的右侧进行操作,%最长的匹配项(从右侧)与进行匹配%%

所有版本ksh(以及bash和其他shell)都支持这些运算符。(对不起,如果这是错误的术语)。

ksh93及更高版本bashzsh可能还有其他版本)也支持sed类似的模式匹配/子值,例如

echo ${str/*_/xx}
#----------|--|>replacement
#----------> pattern to match

输出

xx333.txt

这意味着它的/工作方式类似于sed匹配最长的字符串。

高温超导

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章