2016-08-18 65 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出现超过字符串中出现。

相关问题