2016-08-05 28 views
-1

進入Shell腳本。使用KSH Shell。你能幫我解決這個問題嗎?ksh shell腳本在字符串中查找_的第一次出現,並刪除所有內容,直到

我的字符串就像errorfile101_ApplicationData_2_333.txt。我想刪除所有內容,直到_的第一次出現。

我的輸出應ApplicationData_2_333.txt

+1

我們可以幫助你,但你要問一個具體問題。不只是「這是我想要的,請爲我做」。做一個嘗試,展示代碼並詢問與代碼有關的特定*問題,以幫助您克服被阻止的事情。 – kaylum

+1

新的shell腳本?當你有選擇時,你可能想使用'bash'而不是'ksh'。這個問題不需要,但讓你訪問更多的內置函數(在bash中執行簡單快速的事情,在ksh中執行困難)。 –

+0

感謝Kaylum,下次我肯定會發布我嘗試的代碼。 – PKR

回答

1

這是一個簡單的一個,假設您可以將字符串賦值給一個變量,即

str="errorfile101_ApplicationData_2_333.txt" 
echo ${str#*_} 

輸出

ApplicationData_2_333.txt 

#運算符${str#*_}表示從變量左側刪除以下模式e的價值。

還有##,其從左側刪除最長匹配,這將使你

333.txt 

也有類似的去除運營商從字符串,%的右側和最長匹配工作(右)與%%

所有版本的ksh(以及bash和其他shell)都支持這些運算符。 (對不起,如果這是錯誤的話)。的ksh93和更大

版本(bashzsh和可能其他人)還支持sed狀圖案匹配/子值等

echo ${str/*_/xx} 
#----------|--|>replacement 
#----------> pattern to match 

輸出

xx333.txt 

這意味着/作品如sed匹配最長的字符串。

IHTH

1

可以使用cut命令:

echo "errorfile101_ApplicationData_2_333.txt" | cut -d"_" -f2- 
相關問題