【发布时间】:2017-05-30 08:23:49
【问题描述】:
我有一个文件,其内容如下:
C2:0301,353458082243570,353458082243580,0;
C2:0301,353458082462440,353458082462450,0;
C2:0301,353458082069130,353458082069140,0;
C2:0301,353458082246230,353458082246240,0;
C2:0301,353458082559320,353458082559330,0;
C2:0301,353458080153530,353458080153540,0;
C2:0301,353458082462670,353458082462680,0;
C2:0301,353458081943950,353458081943960,0;
C2:0301,353458081719070,353458081719080,0;
C2:0301,353458081392470,353458081392490,0;
Field 2 and Field 3(考虑将,作为分隔符),包含15 digit IMEI numberranges和not个人IMEI numbers。 IMEI 的常用格式是 8-digits(TAC)+6-digits(Serial number)+0(padded)。 IMEI 中的 6 digits(Serial number) 部分定义了开始和结束范围,其他一切都保持不变。因此,为了在范围内找到单个 IMEIs(这正是我想要的),我需要来自 6 digits(Serial number) 的 unary increment loop 来自 starting IMEI number in Field-2 直到 6 digits(Serial number) 来自 ending IMEI number @987654339 @。我正在使用下面的AWK 脚本:
awk -F"," '{v = substr($2,9,6); t = substr($3,9,6); while(v <= t) printf "%s%0"6"s%s,%s\n", substr($3,1,8),v++,substr($3,15,2),$4;}' TEMP.OUT.merge_range_part1_21
它给了我以下结果:
353458082243570,0
353458082243580,0
353458082462440,0
353458082462450,0
353458082069130,0
353458082069140,0
353458082246230,0
353458082246240,0
353458082559320,0
353458082559330,0
353458080153530,0
353458082462670,0
353458082462680,0
353458081943950,0
353458081943960,0
353458081719070,0
353458081719080,0
353458081392470,0
353458081392480,0
353458081392490,0
除了result中的以下行之外,上述内容与预期相同:
353458080153530,0
result 实际上来自input file 中的下面一行:
C2:0301,353458080153530,353458080153540,0;
但input file 中上述行的expected output 是:
353458080153530,0
353458080153540,0
我需要知道我的脚本出了什么问题。
【问题讨论】:
-
不仅是一种情况,还有你输入的最后 3 行:
353458081392470,0 353458081392480,0 353458081392490,0- 这个353458081392480,0不应该在那里 -
@RomanPerekhrest 没关系。基本上增量必须发生在
substr($2,9,6)。在这种情况下,139247会增加到139249,因此我有353458081392470,0 353458081392480,0 353458081392490,0,这正是我所期望的。我的问题是我的脚本没有处理前导零的情况。例如上面的问题案例substr($2,9,6)是015353。它应该递增到015354,我应该同时拥有353458080153530,0和353458080153540,0。这没有发生 -
忽略我的回答,因为它不适用于 while 循环的第二次迭代
-
在语句末尾设置 v=y 应该可以使其在额外的增量上起作用。
-
我不知道你想做什么,别管它可能有什么问题。你能简化你的例子并阐明你的要求吗?