比方說,我有一個字符串,其內容是US1SERVLOC2
。我希望能夠從該字符串獲得字符串US1
和LOC2
。如何獲得兩個字符串之間用短語分隔?
echo "US1SERVLOC2" | cut -f1 -d 'SERV'
echo "US1SERVLOC2" | cut -f2 -d 'SERV'
我原本試過這個,但是切割不喜歡不是單個字符的分隔符。我該如何做到這一點?
比方說,我有一個字符串,其內容是US1SERVLOC2
。我希望能夠從該字符串獲得字符串US1
和LOC2
。如何獲得兩個字符串之間用短語分隔?
echo "US1SERVLOC2" | cut -f1 -d 'SERV'
echo "US1SERVLOC2" | cut -f2 -d 'SERV'
我原本試過這個,但是切割不喜歡不是單個字符的分隔符。我該如何做到這一點?
嘗試:
s=US1SERVLOC2
echo ${s%SERV*} # prints US1
echo ${s#*SERV} # prints LOC2
請參閱:在Advanced Bash-Scripting Guide
子串拆卸一節。
這question。
注:
%SERV*
將削減SERV*
從s
結束。#*SERV
將削減*SERV
從s
開始。如果SERV
出現多次,您可以使用%%
/##
而不是%
/#
來擴展匹配。但是,這隻會允許您在第一次或最後一次發生SERV
時減少。如果不適合,awk
會欣然接受多字符分隔域:
s=US1SERVLOC1US2SERVLOC2US3SERVLOC3
echo $s | awk -F "SERV" '{print $2}' # prints LOC1US2
使用內置的外殼variable expansion運營商。
var=US1SERVLOC2
part1=${var%SERV*}
part2=${var#*SERV}
但是,這些都不行相同,您試圖cut
如果SERV
出現超過字符串中出現。