Linux/Unix下统计TSV文件指定列每行字符数的方法
如何统计TSV文件指定列的每行字符数?
方法一:用awk命令(快速便捷)
awk是处理分隔符文本的高效工具,适合快速处理TSV/CSV文件。假设你要统计第2列的字符数(对应示例中的句子列),可按以下方式执行:
针对TSV文件(制表符分隔):
awk -F '\t' '{len = length($2); print $0 "\t" len}' input.tsv > output.tsv
-F '\t':指定文件的分隔符为制表符(TSV标准分隔符)length($2):计算第2列的字符总数(包含空格)print $0 "\t" len:输出原行内容,追加制表符和字符数后写入新文件
针对你示例中的CSV文件(逗号分隔):
若处理逗号分隔的文件,仅需修改分隔符参数:
awk -F ',' '{len = length($2); print $0 ", " len}' input.csv > output.csv
执行后即可得到你给出的示例效果:
输入:
ab, an apple
ac, not juice
ad, I like输出:
ab, an apple , 7
ac, not juice, 8
ad, I like, 5
方法二:用Python脚本(灵活扩展)
如果需要处理带引号字段、特殊字符等复杂场景,可使用Python的csv模块编写脚本:
import csv # 处理TSV文件 with open('input.tsv', 'r', newline='', encoding='utf-8') as infile, \ open('output.tsv', 'w', newline='', encoding='utf-8') as outfile: reader = csv.reader(infile, delimiter='\t') writer = csv.writer(outfile, delimiter='\t') for row in reader: # 确保行中存在目标列(此处为第2列,索引从0开始) if len(row) >= 2: char_count = len(row[1]) row.append(str(char_count)) writer.writerow(row)
若处理CSV文件,只需将代码中的delimiter='\t'替换为delimiter=','即可。
内容的提问来源于stack exchange,提问作者Solomon123
相关产品推荐
相关产品推荐

