如何使用awk筛选制表符分隔文本文件并移除指定列
使用AWK处理制表符分隔文本的筛选与列移除需求
先看你提供的制表符分隔输入示例:
chr1 100499714 100499715 1 chr1 100502177 100502178 10 chr1 100502181 100502182 2 chr1 100502191 100502192 18 chr1 100502203 100502204 45
你的两个需求——筛选第四列≥10的行、移除第四列——用AWK可以一次性完成,不用拆成两步操作,效率拉满。
直接可用的命令
运行这条命令就能得到你想要的结果:
awk '$4 >= 10 {print $1, $2, $3}' input.txt
逐部分解释
$4 >= 10:这是筛选规则,AWK会逐行检查第四列($4)的数值,只有满足≥10条件的行,才会执行后面的输出动作。{print $1, $2, $3}:对符合条件的行,只输出前三列。AWK默认用空格分隔输出字段,如果需要严格保留制表符分隔,可以改成{print $1 "\t" $2 "\t" $3}。
实际输出效果
执行命令后,你会得到这样的结果:
chr1 100502177 100502178 chr1 100502191 100502192 chr1 100502203 100502204
如果你的输入文件是严格制表符分隔(担心空格干扰字段识别),可以加上-F "\t"参数强制指定分隔符,同时输出也保持制表符:
awk -F "\t" '$4 >= 10 {print $1 "\t" $2 "\t" $3}' input.txt
这样就万无一失了~
内容的提问来源于stack exchange,提问作者user7249622
相关产品推荐
相关产品推荐

