[英]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.