2016-08-18 73 views
1

比方說,我有一個字符串,其內容是US1SERVLOC2。我希望能夠從該字符串獲得字符串US1LOC2如何獲得兩個字符串之間用短語分隔?

echo "US1SERVLOC2" | cut -f1 -d 'SERV' 
echo "US1SERVLOC2" | cut -f2 -d 'SERV' 

我原本試過這個,但是切割不喜歡不是單個字符的分隔符。我該如何做到這一點?

回答

3

嘗試:

s=US1SERVLOC2 
echo ${s%SERV*} # prints US1 
echo ${s#*SERV} # prints LOC2 

請參閱:在Advanced Bash-Scripting Guide

注:

  • %SERV*將削減SERV*s結束。
  • #*SERV將削減*SERVs開始。
  • 如果SERV出現多次,您可以使用%%/##而不是%/#來擴展匹配。但是,這隻會允許您在第一次或最後一次發生SERV時減少。如果不適合,awk會欣然接受多字符分隔域:

    s=US1SERVLOC1US2SERVLOC2US3SERVLOC3 
    echo $s | awk -F "SERV" '{print $2}' # prints LOC1US2 
    
2

使用內置的外殼variable expansion運營商。

var=US1SERVLOC2 
part1=${var%SERV*} 
part2=${var#*SERV} 

但是,這些都不行相同,您試圖cut如果SERV出現超過字符串中出現。

相關問題