我是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
及更高版本(bash
,zsh
可能还有其他版本)也支持sed
类似的模式匹配/子值,例如
echo ${str/*_/xx}
#----------|--|>replacement
#----------> pattern to match
输出
xx333.txt
这意味着它的/
工作方式类似于sed
匹配最长的字符串。
高温超导
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句