2016-03-24 153 views

回答

2

你可以有更多的下注和其他東西比你的示例輸入。 爲您的樣品輸入,你可以做這樣的事情

newvar=$(echo "${inputstr}" | sed -e 's/[^_]*_//' -e 's/-.*//') 
# or 
newvar=$(echo "${inputstr}" | sed -e 's/.*_\(.*\)-.*/\1/') 
# or 
newvar=$(echo "${inputstr}" | cut -d "_" -f2 | cut -d "-" -f1) 
+0

我放在了第一位拿到64。第二個工作正常。最後一個給我一個錯誤:切:[-cf]列表:非法列表值 切:[-cf]列表:值可能不包括零 – Nelson

+0

對不起,更正。第一個是貪婪的''*',只需要告訴吃除_以外的所有東西。剪切分隔符是選項d,而不是c。 –

1
inputstr=cs-ui-21140322175352_8ddjdb1b4cc4a87d17034dd3704q5a0ea60d6d87-2.x86_64 

newvar=`echo $inputstr | sed 's,.*_\(.*\)-.*,\1,'` 
+0

這看起來像我的第二個解決方案。請注意'$(cmd)'比backtics更安全,更簡單。 –

相關問題