2014-01-24 77 views
-1

我在bash shell腳本問題之間。我正在尋找兩個斜槓之間的字符串。斜線在這裏是一個分隔符。正則表達式來搜索字符串兩條斜線

可以說該字符串/一/二/,我希望能夠給剛剛回暖之一。

我怎樣才能實現這個是在shell腳本?任何指針都非常感謝。

+1

這裏可能有至少20個不錯的選項,你有什麼嘗試? – BroSlow

回答

1
path="/one/two/" 
path=${path#/} # Remove leading/
path=${path%%/*} # Remove everything after first/
echo "$path"  # Is now "one" 
1

使用的awk -F標誌的分隔符設置爲/。然後,您可以打印行中的第一個($2)和第二個($3)字段。

$ cat /my/file 
/one/two/ 

$ awk -F/ '{print $2}' /my/file 
one 

$ awk -F/ '{print $3}' /my/file 
two 

如果字符串是一個變量,你可以管它AWK。

#!/bin/bash 
var=/one/two/ 
echo $var | awk -F/ '{print $2}' 
echo $var | awk -F/ '{print $3}' 
+0

謝謝您的回答 – user839917

1

使用正則表達式:

$ str="/one/two/" 
$ re="/([^/]*)/[^/]*/" 
$ [[ $str =~ $re ]] && echo "${BASH_REMATCH[1]}" 
one 
$ 
1

使用cut

$ str="/one/two/" 
$ echo "$str" | cut -d/ -f2 
one 
$ 
1

轉換您字符串的數組,其中/界定,並且讀出的必要元素:

$ str="/one/two/" 
$ IFS='/' a=($str) echo "${a[1]}" 
one 
$ 
1

還有幾個

> cut -f 2 -d "/" <<< "/one/two" 
one 
> awk -F "/" '{print $2}' <<< "/one/two" 
one 
> oldifs="$IFS"; IFS="/"; var="/one/two/"; set -- $var; echo "$2"; IFS="$oldifs" 
one 
+1

+1''<<<這裏串和'設置--'。你並不需要保存'oldifs'如果你使用命令分組'{IFS =「/」; VAR = 「/一/二/」;設置 - $ var;回聲「2美元」; }' –

相關問題