You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Shell脚本中sed语句"${sta}~${stp}!d"的作用是什么?

sed 表达式 ${sta}~${stp}!d 功能说明

上下文前提

你贴的代码中,前序的grep命令加了--null参数,输出的匹配文件名以空字符(\0)作为分隔符,后续sed加了-z参数,就是指定以空字符作为行分隔符处理输入,此时sed处理的每一个“行”就对应一个匹配到的文件名,不会因为文件名包含空格、换行等特殊字符出现解析错误。

表达式拆解

这个是GNU sed特有的地址匹配语法,拆分来看:

  • ${sta}是预先定义的起始行号变量,${stp}是步长变量
  • first~step是GNU sed的行选择规则:从第first行开始,每隔step行选中一行
  • !d的含义是:没有被前面的行规则选中的行,全部执行删除操作

组合起来的效果就是:仅保留从第${sta}行开始,每隔${stp}行的内容,其余内容全部删除。

示例

如果sta=2、stp=3,最终只会保留第2、5、8、11……行对应的文件名,其余匹配到的文件都会被过滤掉。这种写法通常用来把搜索到的文件按固定步长拆分,多用于多进程并行处理文件的场景。

内容的提问来源于stack exchange,提问作者Dilna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 19:15:03