从字符串中修剪字符串[重复]

Posted

技术标签:

【中文标题】从字符串中修剪字符串[重复]【英文标题】:Trim string from string [duplicate] 【发布时间】:2014-03-26 08:45:42 【问题描述】:

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

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

我虽然在工作中使用sed,但它看起来有点“丑陋”,因为所有\ 都出现在/ 之前。

【问题讨论】:

setenvcsh 命令,而不是 bash 命令。 【参考方案1】:

对于sed,您不必使用/

例如,这也可以:

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

【讨论】:

【参考方案2】:

ONLY_L="$FILES##*/"

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

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

做你想做的事

【讨论】:

【参考方案3】:

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

basename /tmp/files/list

输出:

list

【讨论】:

【参考方案4】:

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

$ FILES='/tmp/files/list'

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

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

【讨论】:

以上是关于从字符串中修剪字符串[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何从字符串中修剪/替换字符'\'或'"'?

修剪字符串中的最后一个字符

面试题:从一个字符串中修剪多个连续的空格

从字符串中修剪/删除制表符 ( "\t" )

C# 中从字符串中修剪换行符的最简单方法是啥?

AFNetworking 从响应中修剪字符