获得最有效的方法是什么:
'a/b/c'
输出字符串可以是以下任何一种:
'/a/b/c/'
'a/b/c/'
'/a/b/c'
'a/b/c'
在bash脚本中?
答案 0 :(得分:3)
我不知道“最有效”,但如果该字符串存储在变量a
中(即$a
扩展为字符串),您可以这样做:
b=${a#/} # Remove possible leading /
c=${b%/} # Remove possible trailing /
将所需的字符串放在变量c
中。如果您的输入字符串包含问题中所写的单引号,则此方法无效,但我怀疑您并不打算表明此类引号位于字符串中。
答案 1 :(得分:1)
使用sed
,您可以:
echo "a/b/c/" | sed "s#^/\(.*\)#\1#" | sed "s#\(.*\)/\$#\1#"
示例:
$ echo "/a/b/c/" | sed "s#^/\(.*\)#\1#" | sed "s#\(.*\)/\$#\1#"
a/b/c
$ echo "a/b/c/" | sed "s#^/\(.*\)#\1#" | sed "s#\(.*\)/\$#\1#"
a/b/c
$ echo "/a/b/c" | sed "s#^/\(.*\)#\1#" | sed "s#\(.*\)/\$#\1#"
a/b/c
$ echo "a/b/c" | sed "s#^/\(.*\)#\1#" | sed "s#\(.*\)/\$#\1#"
a/b/c
答案 2 :(得分:0)
这是一种技巧,但它只会输出一个/ b / c,只要它在输入中存在。
echo '/a/b/c/' | grep --only-matching 'a/b/c'
答案 3 :(得分:0)
$ echo "/a/b/c" | sed 's/^\///;s/\/$//'