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

如何使用sed命令修改分号分隔文件中指定学生的成绩值

问题原因

你写的命令里;*是正则语法,代表匹配前一个字符(分号)出现0次或多次,无法匹配分号后面的成绩字段内容,所以替换后无法覆盖原有成绩,达不到预期效果。

正确实现命令

Linux系统下执行以下命令即可:

sed -i -E '/^(Eric|Chad);/s/([^;]+);[^;]+;/\1;2;/' fileGrades.txt

命令说明

  • -E 参数开启扩展正则支持,减少不必要的转义符
  • /^(Eric|Chad);/ 是行过滤规则,只会处理以Eric;或者Chad;开头的记录,其他行保持不变
  • 替换规则s/([^;]+);[^;]+;/\1;2;/中:
    • ([^;]+) 捕获第一个分号前的姓名内容,存入捕获组1
    • [^;]+ 匹配第二个字段(原成绩)的全部内容
    • \1;2; 用捕获到的姓名加新成绩2,替换原有姓名+成绩的部分,保证后续字段不变

如果是MacOS系统,sed的-i参数需要额外指定空备份后缀,命令调整为:

sed -i '' -E '/^(Eric|Chad);/s/([^;]+);[^;]+;/\1;2;/' fileGrades.txt

执行后效果

修改后的文件内容如下,仅Eric和Chad的成绩被修改为2:

Student;Grade;Comment;
Eric;2;None;
Smith;2;None;
Thomas;1;None;
Chad;2;Nice work;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 06:06:05