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

如何在awk命令中直接去除Windows格式文本行尾的CR字符

awk内部去除CR回车符的实现方案

完全不需要额外拼接tr -d '\r'管道,直接在awk逻辑里就能完成CR字符清理,两种稳定实现如下:

  • 推荐方案:读取阶段自动过滤CR
    在awk的BEGIN块中直接指定输入记录分隔符,同时兼容Unix LF换行和Windows CRLF换行,从文件读取环节就把CR字符排除,不会带入后续字段解析。这种写法还可以去掉冗余的cat调用,awk本身支持直接读取目标文件,减少不必要的管道开销:
    sn=($(awk 'BEGIN{FS=": "; RS="\r?\n"} /SN: / {print $3}' ./serials | sort -u))
    
  • 备选方案:字段提取后裁剪CR
    如果不想修改全局换行匹配规则,可以在提取到SN对应的字段后,用sub函数删除字段末尾附着的\r字符再输出:
    sn=($(awk 'BEGIN{FS=": "} /SN: / {sn_val=$3; sub(/\r$/,"",sn_val); print sn_val}' ./serials | sort -u))
    

两种方案的执行效率都比额外加tr管道更高,省去了额外进程创建和跨管道数据拷贝的成本,第一种方案代码更简洁,对存在混合换行格式的文件兼容性更好。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 10:54:21