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

Linux下多列过滤指定模式但排除第一列的命令实现方案

解决方法:用awk精准指定列范围筛选

直接用awk处理原文件,不需要先执行cut,就能精准检查你指定的列范围(1691-1725),避免误匹配其他列。

场景1:输出原文件的整行

如果要保留原文件的所有列,只筛选1691-1725列中任意一列以140或141开头的行,用这个命令:

awk 'BEGIN { FS = "\t" } { for(i=1691; i<=1725; i++) { if($i ~ /^14[01]/) { print; next } } }' your_file.tsv

场景2:输出指定列(原第2列 + 1691-1725列)

如果要和之前cut的输出格式一致,但只保留符合条件的行,用这个命令:

awk 'BEGIN { FS = OFS = "\t" } { match=0; for(i=1691; i<=1725; i++) { if($i ~ /^14[01]/) { match=1; break } } if(match) { printf "%s", $2; for(i=1691; i<=1725; i++) { printf "%s%s", OFS, $i } print "" } }' your_file.tsv

关键说明

  • FS = "\t":指定制表符为列分隔符,确保列分割准确
  • /^14[01]/:正则匹配以140或141开头的列值(^表示列内容的起始,避免匹配中间包含140/141的情况)
  • 循环遍历1691到1725列,只要有一列符合条件就输出,无需检查所有列,效率很高
  • 完全不用列出所有10000列,只需要指定要检查的范围即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 03:40:58