bash - 这个 BASH SED 命令是什么意思?
问题描述
tnum 示例 ... HYH19986_T_DRIVER_BAG_PRESSURE__78ms_546ms
tnum=`echo $1 | sed -e 's/_.*$//'`
最终的结果是 tnum 最终会变成 HYH19986。我完全没有 BASH 的经验,但快速搜索发现 SED 是流编辑器,本质上也是一个查找替换。
请问有人可以向我解释从-e 开始的所有内容吗?谢谢你。
解决方案
Sed 是“流编辑器”。它是一个非交互式文本编辑器,需要命令来编辑文本。它最常用的命令是“s”,是“substitute”的缩写。这需要两个表达式和一些可选的选项,并用第二个表达式替换第一个表达式。
“s”之后的字符是分隔符 - 它分隔表达式。通常这是“/”,但如果你正在使用路径,那么使用不同的东西可能会更好,:
或者_
你不需要转义每个/
.
是一个正_.*$
则表达式。Sed 匹配这个,并用第二个表达式替换它,第二个和第三个斜杠之间的位,即在这种情况下什么都没有。
_
是文字下划线,.*
是“任意数量的字符”并且$
是行尾。
在第三个斜线之后,您还可以提供选项,例如“g”(我记得它是“global”),这将导致每行运行多次。那是缺失的,但在这种情况下,表达式无论如何都匹配到行尾,所以什么都不会改变。
因此,这会在下划线之后用任何内容替换任何内容,从而导致对其进行修剪。
推荐阅读
- python - 在 Windows 上安装 pip
- reactjs - 是否可以基于node.js环境动态改变webpack中的图片资源路径
- c# - 有没有办法获取 C# DataTable 中每一列的最后一个非空值并将它们显示为单行?
- go - 如何检查函数返回的错误类型(strconv.Atoi)
- javascript - jQuery选择下拉列表的控制高度
- excel - 你如何编写 Vlookup 代码来搜索不同的工作簿?
- python - 在python中应用反射来间接调用另一个类的对象
- html - 菜单打开时可以进行背景滚动(包括 Codepen)
- json - OPENJSON 在解析 JSON 属性时忽略大小写
- java - 从链表到数组(函数)