簡體   English   中英

ksh shell腳本查找字符串中_的第一個匹配項並刪除所有內容,直到

[英]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及更高版本( bashzsh以及可能的其他版本)也支持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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM