linux 取字符串的一部分,什么linux shell命令返回字符串的一部分?
本问题已经有最佳答案,请猛点这里访问。
我想找到一个Linux命令,它可以返回字符串的一部分。在大多数编程语言中,它是substr()函数。bash是否有任何可以用于此目的的命令?我想做这样的事…substr"abcdefg" 2 3—打印cde。
后续类似问题:
提取bash中的子字符串
不是真的复制品。提取bash中的子字符串要求剪切由某个分隔符包围的字符序列。这个问题要求切割出一段字符串,给出偏移量和长度的数值,就像substr()所做的那样。这不一样。
如果您正在寻找一个shell实用程序来执行类似的操作,那么可以使用cut命令。
要举个例子,请尝试:
echo"abcdefg" | cut -c3-5
其产量
cde
其中,-cN-M通知cut命令将列N返回到M中,包括该列。
尽管我有"可接受"的答案,但我想指出,如果您想进行大量的子字符串提取,使用内置子字符串扩展(参见dmckee的答案)是更有效的方法。也就是说,切割更容易记忆和使用。
如果我们想从第3个字符开始到字符串末尾,即:"abcdef",我们需要cdef,然后echo"abcdef"cut-c3,我们需要做什么?
cut有一些有用的论据可以使用。-f将其从计数字符更改为计数字段,默认情况下由制表符分隔,或由-d后面指定的任何字符分隔。因此,要使输入字符串一直到但不包括第一个斜杠(正是我想要的),您可以这样做:cut -d/ -f-1,它可以被理解为"在用/分隔的子字符串上剪切,只返回第一个"。
从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。
有趣的是,我不知道这件事。对于更灵活的子串选项:手动切割
外壳扩展很好,但是…无聊的。
我基本同意。我通常用vanilla/bin/sh编写shell脚本,但我发现我必须知道一些bashims才能阅读shell脚本…
是否有类似于${str:3:-3}的方法从char 3到最后一个char减去-3提取子字符串?
@Becko我现在的bash手册页(MacOS 10.12,所以我认为BSD的血统)比上面的引用要多得多,包括If offset evaluates to a number less than zero, the value is used as an offset from the end of the value of parameter.,意思是你想要${str:-3:3}。
不起作用:str="abcdefghijklmn"; echo ${str:-2:2}返回abcdefghijklmn
哦,但是以东十一〔五〕做我想做的。
@Becko我想我们在"评估到"上遇到麻烦了。你的例子都不适合我,但是str="abcdefghijklmn"; echo ${str:(-2):2}返回mn。这就是为什么我放弃了去理解贝壳到底在做什么。
@德马克,我在江户十一〔八〕号。
在"pure"bash中,您有许多用于(子)字符串操作的工具,主要是但不限于参数扩展:
${parameter//substring/replacement}
${parameter##remove_matching_prefix}
${parameter%%remove_matching_suffix}
索引子串扩展(具有负偏移的特殊行为,在较新的bash中为负长度):
${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很容易找到它们,我觉得进一步扩展这篇文章不值得。
请记住,"索引子字符串扩展"不是POSIX标准的一部分。因此,尽管它在bash上的速度可能比其他选择更快,但当您希望在不同的操作系统上运行脚本时,它可能会妨碍您的工作。
在bash中,您可以尝试以下方法:
stringZ=abcABC123ABCabc
# 0123456789.....
# 0-based indexing.
echo ${stringZ:0:2} # prints ab
Linux文档项目中的更多示例
expr(1)有一个子命令:
expr substr
如果您没有bash(可能是嵌入式Linux),并且不希望使用cut(1)所需的额外"echo"进程,那么这可能很有用。
这里的文档不使用bash(
${string:position:length}
像往常一样,坐在这里,没有上票,WTF。这对我的parse-git-branch命令非常有用。奈斯!
linux 取字符串的一部分,什么linux shell命令返回字符串的一部分?相关推荐
- Centos执行shell命令返回127错误
Centos执行shell命令返回127错误 在终端可以正常运行 web执行shell 返回127错误 解决方法 应该是运行环境和登录用户的运行环境存在差异造成的 在脚本执行之前,添加. /etc/p ...
- linux下如何用c语言调用shell命令-转
C程序调用shell脚本共有三种法子 :system().popen().exec系列函数 system()不用你自己去产生进程,它已经封装了,直接加入自己的命令exec 需要你自己 fork 进程, ...
- Zookeeper之Linux分布式集群搭建及客户端shell命令操作
一.准备至少三台Linux服务器及对应的jdk环境 1.服务器及jdk环境准备 服务器:至少三台Linux服务器 JDK环境:三台Linux服务器上都需要安装好jdk环境(jdk环境安装参考我的博客: ...
- Unix/Linux环境C编程入门教程(39) shell命令之系统管理
df命令 用于检测文件系统的磁盘空间占用和空余情况,可以显示所有文件系统对节点和磁盘块的使用情况.命令的使用格式如下: df [选项] 常用参数及含义如下表所示. df -a:显示所有文件系统的磁盘 ...
- java shell 127_java执行shell命令返回127 :No such file or directory
场景:需要在指定的远端机器执行某些shell命令 过程: java中执行以下代码: Process process = Runtime.getRuntime().exec(realCommond); ...
- Linux脚本双引号字符去除,shell命令去除字符串里双引号
echo \"refs/changes/84/727284/1\" | sed 's/\"//g' shell变量内字符替换和变量字符修改 a=12345123 #将${ ...
- LInux:shell 命令:字符串截取
1.cut命令截取 使用说明 cut 命令从文件的每一行剪切字节.字符和字段并将这些字节.字符和字段写至标准输出. 如果不指定 File 参数,cut 命令将读取标准输入.必须指定 -b.-c 或 - ...
- linux+取当天日期文件夹,Linux shell脚本:创建一个包含当前日期名称的文件夹
我正在尝试制作一个简单的备份脚本,我在创建一个名称为curent date的文件夹时遇到问题 我的脚本是那个,基本上问题出在最后一行 drivers=$(ls /media/) declare -i ...
- linux取批量文件的关键字,Linux多文件替换关键字
现在网上这样的方法只有两种,一种是Mahuinan法,一种是Sumly法,一种是30T法分别如下: 一.Mahuinan法: 用sed命令可以批量替换多个文件中的字符串.sed -i "s/ ...
- Linux下查看CPU/内存/硬盘的shell命令
1.cpu查看 1)cpu个数:#cat /proc/cpuinfo | grep "physical id" | uniq | wc -l 2)cpu核数:#cat /proc/ ...
最新文章
- oracle参数文件的本质
- DevOps笔记-04:DevOps工具和文化缺一不可
- 万里挑一!北大AI女神每天必看的几个优质公众号
- 95-190-642-源码-窗口操作符-EvictingWindowOperator
- Cookie学习总结
- python圆形按钮_小白用python写个贪吃蛇给小白看
- java连接mongo_java 连接mongodb
- Kafka配置5--Windows下配置Kafka的集群+SASL+SSL
- python随机出100道加法题_python3 随机生成10以内的加法算术题
- 实验吧 Guess Next Session
- 用java开发app的步骤,看看这篇文章吧!
- 电脑端知乎不显示图片
- Linux系统Word转换PDF,文档字体乱码不显示问题解决
- 软件性能测试 容量测试,性能测试容量计算方法
- 最新支持7.2!用C++干掉讨厌的学生机房管理助手
- linux所说的挂载是什么意思
- 中国软件行业协会成立25周年庆典 《程序员》荣获杰出传媒奖
- 解决Eclipse “Polling news feeds...”弹出的问题
- ByteBuffer学习笔记
- android锁屏应用系统排行榜,重塑安卓手机的20大锁屏应用程序
热门文章
- outlook配置126邮箱
- python登录代码_python自动登录126等邮箱的代码
- demonstration记忆_怎样快速记单词方法高效记忆单词法
- win7如何设置电脑自动拨号?
- php分页设计美化,国产PHP框架之ThinkPHP各模块开发系列十七,美化分页显示
- 高通SDX55平台:Modem Loopback测试指导
- http请求417错误
- 10月24日——程序猿的节日
- 太原理工大计算机专业几本,太原理工大学是几本 学生评价怎么样好不好(10条)...
- hp服务器时间修改,HP服务器bios时间设置确认