如何使用 Shell 获取两个特殊字符之间的字符串?

如何使用 Shell 获取两个特殊字符之间的字符串?

我想得到两个特殊字符之间的字符串。例如,

/home/oracle/ggs/text.ext

我想甲骨文/ggs在上面的字符串中。

我怎样才能使用 bash 做到这一点?

答案1

$ expr /home/oracle/ggs/text.ext : '/home/\(.*\)/'
oracle/ggs

返回/home/最后一个之后和之前的部分/

满足您要求的其他可能方法:

$ echo /home/oracle/ggs/text.ext | cut -d/ -f3,4
oracle/ggs
$ echo /home/oracle/ggs/text.ext | cut -c 7-16
oracle/ggs
$ echo oracle/ggs
oracle/ggs

答案2

对于这个特定的示例,您可以使用awk

echo "$string" | awk -F '/' '{printf "%s%s%s\n" ,$2,FS,$3}'

Perl 中也是如此:

echo "$string" | perl -lanF '/' -E '$,="/";say @F[1,2]'

答案3

重击

IFS=/ read -ra a <<<'/home/oracle/ggs/text.ext' && 
(IFS=/; printf '%s\n' "${a[*]:2:2}") 
oracle/ggs

相关内容