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

AWK如何选取含空值的列?求正确实现方法

解决AWK提取制表符分隔文件第一列的问题

问题原因

AWK默认以任意连续空白字符(空格、制表符、换行等)作为字段分隔符,这会导致两个问题:

  1. 当行首是制表符时,AWK会跳过前面的空白,将后续非空字段错误识别为$1(比如输入第三行的6、第五行的9都被当成了第一列)
  2. 原命令awk '$1!=""{print $1}'的判断逻辑不符合需求——你需要输出所有行的第一列(包括空值),而非仅非空的第一列

正确解决方案

指定字段分隔符为制表符,直接提取每一行的第一列:

awk -F'\t' '{print $1}' ./demo.txt

如果你的Shell不支持'\t'转义,可改用ANSI-C引号写法:

awk -F$'\t' '{print $1}' ./demo.txt

输出结果说明

执行上述命令后会输出5行(与输入行数一致):

  • 第1行:1(对应输入第一行的第一列)
  • 第2行:4(对应输入第二行的第一列)
  • 第3行:空行(对应输入第三行的第一列空值)
  • 第4行:7(对应输入第四行的第一列)
  • 第5行:空行(对应输入第五行的第一列空值)

完全匹配你期望的包含空行的输出要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 09:15:29