2016-03-24 13 views

cevap

2

Örnek girişinizden daha çok alt kısma ve başka şeylere sahip olabilirsiniz. sizin örnek girişi için ben ilk birinde 64 var

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

gibi bir şey yapabilirsiniz. İkincisi iyi çalıştı. Sonuncusu bana bir hata verdi: cut: [-cf] liste: yasadışı liste değeri kesim: [-cf] liste: değerler sıfır içerebilir – Nelson

+0

Üzgünüm, düzeltildi. Birincisi açgözlüydü ''. Kesim sınırlayıcı seçeneği d değil, c değil. –

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

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

Bu, ikinci çözümüm gibi görünüyor. Lütfen, $ (cmd) 'nin backtics'ten daha güvenli ve daha kolay olduğunu unutmayın. –

İlgili konular