gpt4 book ai didi

linux - ksh shell 脚本查找字符串中第一次出现的 _ 并删除所有内容,直到出现

转载 作者:太空宇宙 更新时间:2023-11-04 04:45:36 24 4
gpt4 key购买 nike

我是 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匹配最长的可能字符串。

IHTH

关于linux - ksh shell 脚本查找字符串中第一次出现的 _ 并删除所有内容,直到出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38780432/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com