我想找一个可以返回部分字符串的linux命令。在大多数编程语言中,它是substr()函数。bash是否有任何可用于此目的的命令。我想做这样的事情...substr "abcdefg" 2 3 -打印cde。
随后的类似问题:
发布于 2008-10-20 18:39:36
如果您正在寻找一个外壳实用程序来做这样的事情,您可以使用cut命令。
以您的示例为例,请尝试:
echo "abcdefg" | cut -c3-5哪一项会产生
cde其中,-cN-M告诉cut命令返回列N到M,包括N和M。
发布于 2008-10-20 18:35:53
从bash手册页:
${parameter:offset}
${parameter:offset:length}
Substring Expansion. Expands to up to length characters of
parameter starting at the character specified by offset.
[...]或者,如果您不确定是否使用bash,请考虑使用cut。
发布于 2011-11-13 05:16:12
在“纯”bash中,您有许多用于(子)字符串操作的工具,主要但不完全是在parameter expansion中:
${parameter//substring/replacement}
${parameter##remove_matching_prefix}
${parameter%%remove_matching_suffix}索引子字符串扩展(具有负偏移量的特殊行为,在较新的Bashes中为负长度):
${parameter:offset}
${parameter:offset:length}
${parameter:offset:length}当然,还有对参数是否为空进行操作的非常有用的扩展:
${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可以很容易地找到它们,所以我觉得不值得进一步扩展这篇文章。
https://stackoverflow.com/questions/219402
复制相似问题