我正在尝试解析具有标题部分(130 行,单列)的大型 CSV(约 90 MB)。第 131 行是列标题,其中包含各个列的名称(总共 20 列)。
我不需要解析前 9 列,从第 10 列到第 20 列的数据采用以下格式(重新格式化为列以便于查看,但下面的每一行实际上在 CSV 中的单独列中)
0/0: 3,0 :9:0,9,90
./.
0/1:6,3:49:73,0,111
0/1:13,3:99:103,0,254
0/1:6,6:45:56,3,124
0/1:2,2:34:43,0,51
0/1: 80,0 :87:252,5,1882
0/1:25,12:99:139,286,3281
./.
0/1:6,8:64:64,0,130
0/1:4,5:65:109,0,114
以这个“0/0: 3,0 :9:0,9,90”为例,标准是:如果突出显示的两个数字(3,0)加起来> = 20并且第二个数字(0 ) 大于或等于 10,然后将其打印到新的 CSV。如果不通过条件,只需打印“./.” 在新的 CSV 中。具有“./.”的单元格 已经将保持“./.” 在新的 CSV 中。
我已经在这个线程中问了一部分问题,使用 awk 逐行处理 csv(制表符分隔),感谢 Kent,我现在知道如何将标准应用于单个单元格,但我需要循环 10列并应用相同的条件。下面是我想出的,但显然,我需要更多帮助来完成这个。任何帮助/建议将不胜感激。
BEGIN {
-F'\t'; -v OFS='\t'
for (i=10; i<=20; i++)
{
t=$i;
split(t,a,/[:,]/)}(a[2]+a[3])>=20 && a[3]>=10
}
}