[英]ksh shell script to find first occurence of _ in string and remove everything until that
我是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
一样匹配最长的字符串。
高温超导
您可以使用cut
命令:
echo "errorfile101_ApplicationData_2_333.txt" | cut -d"_" -f2-
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.