进入Shell脚本。使用KSH Shell。你能帮我解决这个问题吗?ksh shell脚本在字符串中查找_的第一次出现,并删除所有内容,直到
我的字符串就像errorfile101_ApplicationData_2_333.txt。我想删除所有内容,直到_的第一次出现。
我的输出应ApplicationData_2_333.txt
进入Shell脚本。使用KSH 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#*_}
表示从变量左侧删除以下模式e的价值。
还有##
,其从左侧删除最长匹配,这将使你
333.txt
也有类似的去除运营商从字符串,%
的右侧和最长匹配工作(右)与%%
。
所有版本的ksh
(以及bash和其他shell)都支持这些运算符。 (对不起,如果这是错误的话)。的ksh93
和更大
版本(bash
,zsh
和可能其他人)还支持sed
状图案匹配/子值等
echo ${str/*_/xx}
#----------|--|>replacement
#----------> pattern to match
输出
xx333.txt
这意味着/
作品如sed
匹配最长的字符串。
IHTH
可以使用cut
命令:
echo "errorfile101_ApplicationData_2_333.txt" | cut -d"_" -f2-
我们可以帮助你,但你要问一个具体问题。不只是“这是我想要的,请为我做”。做一个尝试,展示代码并询问与代码有关的特定*问题,以帮助您克服被阻止的事情。 – kaylum
新的shell脚本?当你有选择时,你可能想使用'bash'而不是'ksh'。这个问题不需要,但让你访问更多的内置函数(在bash中执行简单快速的事情,在ksh中执行困难)。 –
感谢Kaylum,下次我肯定会发布我尝试的代码。 – PKR