当前位置:  开发笔记 > 编程语言 > 正文

什么linux shell命令返回字符串的一部分?

如何解决《什么linuxshell命令返回字符串的一部分?》经验,为你挑选了6个好方法。

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


随后的类似问题:

在Bash中提取子字符串

Toybuilder.. 167

如果您正在寻找shell实用程序来执行类似的操作,则可以使用该cut命令.

举个例子,试试:

echo "abcdefg" | cut -c3-5

产量

cde

-cN-M告诉剪切命令列返回NM,包容性.



1> Toybuilder..:

如果您正在寻找shell实用程序来执行类似的操作,则可以使用该cut命令.

举个例子,试试:

echo "abcdefg" | cut -c3-5

产量

cde

-cN-M告诉剪切命令列返回NM,包容性.


即使我有"接受"的答案,我想指出,如果你想进行大量的子字符串提取,使用内置子字符串扩展(请参阅dmckee的答案)是更有效的方法.也就是说,切割更容易记忆和使用.

2> dmckee..:

从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.



3> ata..:

在"纯"bash中,你有很多用于(子)字符串操作的工具,主要是但不仅仅是参数扩展:

${parameter//substring/replacement}
${parameter##remove_matching_prefix}
${parameter%%remove_matching_suffix}

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

${parameter:offset}
${parameter:offset:length}
${parameter:offset:length}

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

${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,我觉得进一步扩展这篇文章并不值得.



4> Juanma..:

在bash中你可以试试这个:

stringZ=abcABC123ABCabc
#       0123456789.....
#       0-based indexing.

echo ${stringZ:0:2} # prints ab

Linux文档项目中的更多示例



5> camh..:

expr(1) 有一个substr子命令:

expr substr   

如果您没有bash(可能是嵌入式Linux)并且您不希望使用cut(1)需要额外的"echo"过程,这可能很有用.



6> Bill the Liz..:
${string:position:length}

推荐阅读
php
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有