如何用Bash命令或Python脚本删除TSV文件中第二列为1的行
处理大TSV文件:删除第二列值为1的行
方案1:Bash(awk命令)
针对2GB级别的大文件,awk是高效轻量的选择——它无需加载整个文件到内存,逐行处理速度极快。直接执行以下命令即可完成过滤:
awk '$2 != 1' input.tsv > output.tsv
- 逻辑说明:awk会遍历
input.tsv的每一行,仅保留第二列值不等于1的行,并将结果写入output.tsv。 - 注意事项:替换
input.tsv为你的源文件名,output.tsv为目标输出文件名;该命令在Linux、macOS默认自带,Windows用户可通过Git Bash或WSL执行。
方案2:Python脚本
如果需要用Python处理,推荐采用逐行读写的方式,避免一次性加载大文件导致内存溢出:
# 逐行过滤大TSV文件,排除第二列为1的行 with open('input.tsv', 'r', encoding='utf-8') as infile, open('output.tsv', 'w', encoding='utf-8') as outfile: for line in infile: # 按制表符分割列(TSV标准分隔符),若文件实际为空格分隔,可改为split() columns = line.strip().split('\t') # 确保行格式合法且第二列不是'1' if len(columns) >= 2 and columns[1] != '1': outfile.write(line)
- 逻辑说明:脚本逐行读取源文件,检查每一行的第二列,符合条件的行直接写入输出文件,内存占用极低,适配超大文件场景。
- 注意事项:根据文件实际编码调整
encoding参数,替换脚本中的文件名。
内容的提问来源于stack exchange,提问作者rimo
相关产品推荐
相关产品推荐

