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

使用awk打印每行首尾字段时仅最后一行正常,该如何修复?

问题原因

你的输入文件是Windows格式的文本文件,行尾分隔符为\r\n(回车+换行)。gawk默认以\n作为行分割符,因此除了没有末尾换行的最后一行外,其余所有行的末尾都会残留一个不可见的\r(回车符)。
此时前两行的$NF实际为不可见的\r,打印时\r会将光标移动到当前行首,导致你看不到$NF的输出,看起来就像只有首字段被打印。

修复方案

可选任意一种方法解决:

  • 方法1:在awk脚本中先移除行尾的\r再处理字段
    执行命令:
    gawk '{ sub(/\r$/, ""); print $1 " " $NF }' file_lists.t01
    
  • 方法2:提前将文件转换为Unix格式(行尾仅\n)
    可以用dos2unix工具执行转换:
    dos2unix file_lists.t01
    
    转换完成后即可正常运行你原来的awk命令。
  • 方法3:直接指定gawk的行分隔符为\r\n
    执行命令:
    gawk -v RS='\r\n' '{ print $1 " " $NF }' file_lists.t01
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 21:57:02