進入Shell腳本。使用KSH Shell。你能幫我解決這個問題嗎?ksh shell腳本在字符串中查找_的第一次出現,並刪除所有內容,直到
我的字符串就像errorfile101_ApplicationData_2_333.txt。我想刪除所有內容,直到_的第一次出現。
我的輸出應ApplicationData_2_333.txt
進入Shell腳本。使用KSH 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#*_}
表示從變量左側刪除以下模式e的價值。
還有##
,其從左側刪除最長匹配,這將使你
333.txt
也有類似的去除運營商從字符串,%
的右側和最長匹配工作(右)與%%
。
所有版本的ksh
(以及bash和其他shell)都支持這些運算符。 (對不起,如果這是錯誤的話)。的ksh93
和更大
版本(bash
,zsh
和可能其他人)還支持sed
狀圖案匹配/子值等
echo ${str/*_/xx}
#----------|--|>replacement
#----------> pattern to match
輸出
xx333.txt
這意味着/
作品如sed
匹配最長的字符串。
IHTH
可以使用cut
命令:
echo "errorfile101_ApplicationData_2_333.txt" | cut -d"_" -f2-
我們可以幫助你,但你要問一個具體問題。不只是「這是我想要的,請爲我做」。做一個嘗試,展示代碼並詢問與代碼有關的特定*問題,以幫助您克服被阻止的事情。 – kaylum
新的shell腳本?當你有選擇時,你可能想使用'bash'而不是'ksh'。這個問題不需要,但讓你訪問更多的內置函數(在bash中執行簡單快速的事情,在ksh中執行困難)。 –
感謝Kaylum,下次我肯定會發布我嘗試的代碼。 – PKR