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

如何用命令行删除文件中以指定字符串开头的所有词(以"end"为例)

如何用命令行删除文件中以指定字符串开头的所有词(以"end"为例)

嘿,我来帮你搞定这个问题!你想要移除文件里所有以end开头的词(比如例子里的end=423471这类),之前试的sed命令没生效,咱们来调整一下方案。

先说说你原来命令的问题

你用的sed 's/\S*\(end\|END\)\S*//g' file.txt,这个正则表达式的逻辑是匹配包含end或END的任意非空白字符串,但它不是专门匹配以end开头的词,甚至会把像xend123这种中间带end的词也删掉,而且顺序不对,自然达不到你想要的效果。

正确的sed命令写法

1. 只匹配小写end开头的词(和你的示例需求一致)

直接用这个命令就可以:

sed 's/\bend\S*//g' file.txt
  • \b:表示单词边界,确保我们匹配的是一个完整单词的开头,不会误删其他词里的end片段
  • end:指定要匹配的前缀
  • \S*:匹配end后面所有的非空白字符(也就是整个end=xxxx的部分)
  • //g:全局替换,把一行里所有符合条件的词都删掉

2. 如果需要匹配大小写(比如END=xxx、End=xxx)

可以用大小写兼容的写法:

# 通用写法,所有sed版本都支持
sed 's/\b[Ee][Nn][Dd]\S*//g' file.txt

# GNU sed可以用更简洁的大小写不敏感选项
sed -I 's/\bend\S*//g' file.txt

3. 直接修改原文件(不只是输出到终端)

如果想直接修改原文件内容,而不是只在终端看结果:

# GNU sed(Linux系统)
sed -i 's/\bend\S*//g' file.txt

# macOS系统的sed需要加空参数
sed -i '' 's/\bend\S*//g' file.txt

验证效果

用你的示例输入测试:

原行内容:
<region> sample=PDL UP IN-A-1.flac lokey=21 hikey=21 lovel=0 hivel=21 end=423471 pitch_keycenter=21
执行命令后得到:
<region> sample=PDL UP IN-A-1.flac lokey=21 hikey=21 lovel=0 hivel=21 pitch_keycenter=21

完全符合你想要的结果哦!

备注:内容来源于stack exchange,提问作者black-clover

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 09:08:11