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

如何使用sed命令仅替换文本文件每行最后一列的匹配值

操作场景

现有名为file.txt的空格分隔文本文件,每行最后一列是权限数值,需要将该列数值替换为对应的权限名称,不能修改行内其他位置的同值内容。
权限数值和名称的对应规则如下:

  • 10:Minimal acces
  • 20:Guest
  • 30:View
  • 40:Reporter
  • 50:Owner
问题原因

原命令sed 's/\b30\b/View/g' file.txt为全局匹配逻辑,会替换文本中所有独立的30字段,未限定匹配位置,会误改行内时间、其他字段中出现的同值数字,无法满足仅替换最后一列的需求。

解决命令

使用行尾锚定正则,只匹配每行末尾的权限数值做替换,一次性完成所有映射转换,命令如下:

sed -E '
s/ 10$/ Minimal acces/
s/ 20$/ Guest/
s/ 30$/ View/
s/ 40$/ Reporter/
s/ 50$/ Owner/
' file.txt

命令说明

  • 正则中的$是行尾锚定符,只会匹配每行最末尾、前面带空格的对应数字,完全不会触碰行内其他位置的同值内容
  • -E参数启用扩展正则语法,不需要额外转义字符,兼容GNU sed(Linux环境默认)、BSD sed(macOS环境默认)

如果需要直接把修改写入原文件,加上-i参数即可:

sed -i -E '
s/ 10$/ Minimal acces/
s/ 20$/ Guest/
s/ 30$/ View/
s/ 40$/ Reporter/
s/ 50$/ Owner/
' file.txt
处理结果

执行命令后输出的内容完全符合预期格式,所有行最后一列的数值都被替换为对应权限名,其余字段内容保持不变。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 14:45:41