首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >哪个linux shell命令返回字符串的一部分?

哪个linux shell命令返回字符串的一部分?
EN

Stack Overflow用户
提问于 2008-10-20 18:33:34
回答 6查看 232.7K关注 0票数 106

我想找一个可以返回部分字符串的linux命令。在大多数编程语言中,它是substr()函数。bash是否有任何可用于此目的的命令。我想做这样的事情...substr "abcdefg" 2 3 -打印cde

随后的类似问题:

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2008-10-20 18:39:36

如果您正在寻找一个外壳实用程序来做这样的事情,您可以使用cut命令。

以您的示例为例,请尝试:

代码语言:javascript
复制
echo "abcdefg" | cut -c3-5

哪一项会产生

代码语言:javascript
复制
cde

其中,-cN-M告诉cut命令返回列NM,包括NM

票数 192
EN

Stack Overflow用户

发布于 2008-10-20 18:35:53

从bash手册页:

代码语言:javascript
复制
${parameter:offset}
${parameter:offset:length}
        Substring  Expansion.   Expands  to  up  to length characters of
        parameter starting at the character  specified  by  offset.
[...]

或者,如果您不确定是否使用bash,请考虑使用cut

票数 104
EN

Stack Overflow用户

发布于 2011-11-13 05:16:12

在“纯”bash中,您有许多用于(子)字符串操作的工具,主要但不完全是在parameter expansion中:

代码语言:javascript
复制
${parameter//substring/replacement}
${parameter##remove_matching_prefix}
${parameter%%remove_matching_suffix}

索引子字符串扩展(具有负偏移量的特殊行为,在较新的Bashes中为负长度):

代码语言:javascript
复制
${parameter:offset}
${parameter:offset:length}
${parameter:offset:length}

当然,还有对参数是否为空进行操作的非常有用的扩展:

代码语言:javascript
复制
${parameter:+use this if param is NOT null}
${parameter:-use this if param is null}
${parameter:=use this and assign to param if param is null}
${parameter:?show this error if param is null}

它们有比上面列出的更多可调整的行为,正如我所说的,还有其他方法来操作字符串(一种常见的方法是将$(command substitution)与sed或任何其他外部过滤器结合使用)。但是,通过输入man bash可以很容易地找到它们,所以我觉得不值得进一步扩展这篇文章。

票数 34
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/219402

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档