2014-01-24 48 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美元”; }' –

相关问题