修剪字符串中的字符串

时间:2014-02-24 15:31:05

标签: regex linux bash sed

我想从变量/tmp/files/修剪此字符串$FILES 例如:

setenv FILES=/tmp/files/list
ONLY_L=`trim($FILES,'/tmp/files/')`
echo $ONLY_L
#should see only 'list'

我虽然使用sed来完成这项工作,但它看起来有点“丑陋”,因为\之前的所有/都来了。

4 个答案:

答案 0 :(得分:3)

对于sed,您不必使用/

例如,这也有效:

echo $FILES | sed 's#/tmp/files/##'

答案 1 :(得分:1)

ONLY_L="${FILES##*/}"

ONLY_L="$(basename "$FILES")"

ONLY_L="$(echo "$FILES" | sed 's|.*/||')"

做你想做的事

答案 2 :(得分:1)

您应该使用basename命令。它会自动删除路径并只留下文件名:

basename /tmp/files/list

输出:

list

答案 3 :(得分:0)

您不需要sed或致电工具。 bash使用string substitution为您提供此功能。

$ FILES='/tmp/files/list'

# do this
$ echo "${FILES/\/tmp\/files\/}"
list

# or this
$ echo "${FILES##*/}"
list