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

如何用sed或awk为文件每行末尾添加列首字母组成的新列

这两个工具都能轻松搞定你的需求,给你分别说下实现方式:

用Awk实现(最直观简洁)

Awk处理列格式的数据本来就得心应手,这个需求用它写起来特别清爽:

awk -F',' '{print $0 "," substr($1,1,1) substr($2,1,1)}' your_input_file

简单解释下每个部分:

  • -F',':告诉Awk用逗号作为列分隔符,这样就能把每行拆成两列
  • $0:代表当前正在处理的整行内容
  • substr($1,1,1):从第一列的第1个位置开始,截取1个字符(也就是第一列的首字母)
  • substr($2,1,1):同理,截取第二列的首字母
  • 最后把原内容、逗号、两个首字母拼接起来输出,正好就是你要的结果。

用Sed实现(纯文本替换思路)

如果习惯用Sed做文本替换,也可以通过正则捕获首字母来实现:

sed -E 's/^([A-Za-z])([^,]*),([A-Za-z])(.*)/\1\2,\3\4,\1\3/' your_input_file

这里的逻辑是用正则拆分行内容,再重新拼接:

  • -E:启用扩展正则表达式,避免写一堆烦人的转义符
  • 正则^([A-Za-z])([^,]*),([A-Za-z])(.*):
    • ([A-Za-z]):捕获第一列的首字母(记为\1)
    • ([^,]*):捕获第一列首字母之后的所有字符(记为\2)
    • ([A-Za-z]):捕获第二列的首字母(记为\3)
    • (.*):捕获第二列首字母之后的所有字符(记为\4)
  • 替换后的\1\2,\3\4,\1\3:先把原行内容还原出来,再追加逗号和两个首字母的组合。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:23:53