2017-08-28 280 views

回答

2

可能用awk与-分隔符

echo "abc-def-ghi" | awk -F'-' '{print $2}' 

-F - 要使用的字段分隔符。

{打印$ 2} - 打印第二位置

2

假设您有:

s="abc-def-ghi" 
ch='-' 

使用bash read内置:

IFS="$ch" read -ra arr <<< $s && echo "${arr[1]}" 

或者,使用正则表达式BASH:

re="$ch([^$ch]*)$ch" 

[[ $s =~ -([^-]*)- ]] && echo "${BASH_REMATCH[1]}" 

输出:

def 
1

我会用两个参数扩展。

str="abc-def-ghi" 
tmp=${str#*-} # Remove everything up to and including first - 
result=${tmp%%-*} # Remove the first - and everything following it 
0

为什么不直接使用削减命令是这样的:

海峡= “ABC-DEF-GHI”

回声$海峡|切-f 2 -d“ - ”

,其中-d选项是分隔符和-f选项表示片段数(第一个片段号为1,不为0,因为它是为数组常见)。

相关问题