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

Shell 如何删除文本中仅包含单个列的行?

Shell 实现删除仅含单个列的行的方法

核心方案(awk实现,最严谨通用)

直接使用如下命令处理目标文本文件即可:

awk 'NF>1' 你的输入文件名

原理解释:

  • awk默认以任意空白字符(空格、制表符等)作为列分隔符拆分每行内容
  • 内置变量NF表示当前行的字段(列)总数
  • 条件NF>1表示仅保留列数大于1的行,awk匹配条件后默认动作是打印该行,因此无需额外写打印逻辑

针对你的示例输入运行该命令,会直接过滤掉仅含1列的ijk、mno行,输出你预期的结果。

特殊场景适配

如果你的列分隔符不是默认空白,比如是逗号分隔的CSV文件,可以通过-F参数指定分隔符:

# 处理CSV文件,删除仅含单列的行
awk -F',' 'NF>1' input.csv

其他可选方案(grep实现,仅适用于无行首行尾空白的场景)

如果确认所有行的首尾都没有多余空白,也可以用grep匹配包含空白字符的行:

grep '[[:blank:]]' 你的输入文件名

注意该方案不严谨:如果某行只有1个单词但首尾存在空白字符,会被误判为多列,因此优先推荐使用awk方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 04:24:03