我在bash shell腳本問題之間。我正在尋找兩個斜槓之間的字符串。斜線在這裏是一個分隔符。正則表達式來搜索字符串兩條斜線
可以說該字符串/一/二/,我希望能夠給剛剛回暖之一。
我怎樣才能實現這個是在shell腳本?任何指針都非常感謝。
我在bash shell腳本問題之間。我正在尋找兩個斜槓之間的字符串。斜線在這裏是一個分隔符。正則表達式來搜索字符串兩條斜線
可以說該字符串/一/二/,我希望能夠給剛剛回暖之一。
我怎樣才能實現這個是在shell腳本?任何指針都非常感謝。
path="/one/two/"
path=${path#/} # Remove leading/
path=${path%%/*} # Remove everything after first/
echo "$path" # Is now "one"
使用的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}'
謝謝您的回答 – user839917
使用bash正則表達式:
$ str="/one/two/"
$ re="/([^/]*)/[^/]*/"
$ [[ $str =~ $re ]] && echo "${BASH_REMATCH[1]}"
one
$
使用cut
:
$ str="/one/two/"
$ echo "$str" | cut -d/ -f2
one
$
轉換您字符串的數組,其中/
界定,並且讀出的必要元素:
$ str="/one/two/"
$ IFS='/' a=($str) echo "${a[1]}"
one
$
還有幾個
> 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''<<<這裏串和'設置--'。你並不需要保存'oldifs'如果你使用命令分組'{IFS =「/」; VAR = 「/一/二/」;設置 - $ var;回聲「2美元」; }' –
這裏可能有至少20個不錯的選項,你有什麼嘗試? – BroSlow