Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 用awk识别uniq值_Bash_Awk - Fatal编程技术网

Bash 用awk识别uniq值

Bash 用awk识别uniq值,bash,awk,Bash,Awk,我有这个txt文件: 237708978 5555120825555282 237708978 5555120825555282 237708978 5555120825555281 237708978 5555120825555281 237708978 5555120825555283 239480114 55551208255552814 239480114 55551208255552812 239480114 55551208255552812 239480114 5555120825

我有这个txt文件:

237708978 5555120825555282
237708978 5555120825555282
237708978 5555120825555281
237708978 5555120825555281
237708978 5555120825555283
239480114 55551208255552814
239480114 55551208255552812
239480114 55551208255552812
239480114 55551208255552814
239480114 55551208255552813
239393704 55551208255552813
239393704 555512082555528133
239393704 555512082555528133
239393704 555512082555528132
239393704 555512082555528132
239393704 555512082555528132
239393704 555512082555528132
239393704 555512082555528131
239393704 555512082555528131
239393704 555512082555528133
239393704 5555120825528132
239393704 5555120825528132
239393704 5555120825528133
239393704 5555120825528132
239393704 5555120825528131
239393704 5555120825528131
239393704 5555120825528133
我想在第2列每次更改时添加一个唯一编号的列。 我正在运行这个awk脚本(在我的代码中格式化为一行):

我得到了

237708978 1 5555120825555282 
237708978 1 5555120825555282 5555120825555282
237708978 2 5555120825555281 5555120825555281
237708978 2 5555120825555281 5555120825555281
237708978 3 5555120825555283 5555120825555283
239480114 4 55551208255552814 55551208255552814
239480114 4 55551208255552812 55551208255552814
239480114 4 55551208255552812 55551208255552814
239480114 4 55551208255552814 55551208255552814
239480114 4 55551208255552813 55551208255552814
239393704 4 55551208255552813 55551208255552814
239393704 5 555512082555528133 555512082555528133
239393704 5 555512082555528133 555512082555528133
239393704 5 555512082555528132 555512082555528133
239393704 5 555512082555528132 555512082555528133
239393704 5 555512082555528132 555512082555528133
239393704 5 555512082555528132 555512082555528133
239393704 5 555512082555528131 555512082555528133
239393704 5 555512082555528131 555512082555528133
239393704 5 555512082555528133 555512082555528133
239393704 6 5555120825528132 5555120825528132
239393704 6 5555120825528132 5555120825528132
239393704 7 5555120825528133 5555120825528133
239393704 8 5555120825528132 5555120825528132
239393704 9 5555120825528131 5555120825528131
239393704 9 5555120825528131 5555120825528131
239393704 10 5555120825528133 5555120825528133
在第6行之前,结果似乎还可以。当旧变量变得太长时,将无法再与$2进行比较。在第2列中具有较短值的文件末尾,结果再次正确

有人有主意吗? 我不能使用关联数组,因为文件太大,所以我只能使用if-else条件。

强制“previous”值为字符串而不是数字:

awk '"x" $2 != prev { count++; prev = "x" $2 } {print $1, count, $2}'
强制“previous”值为字符串而不是数字:

awk '"x" $2 != prev { count++; prev = "x" $2 } {print $1, count, $2}'

老实说,我不明白你的要求。。。你能根据你的输入给出一个预期的输出吗?如果@fedorqui的答案解决了您的问题,请检查它的答案您的脚本中有许多不必要的大括号-三个级别的不必要大括号。我将脚本拆分为多行,因为单行代码(a)显示不好,(b)难以理解。使代码可读,使其易于理解是一项重要技能。老实说,我不理解您的要求。。。你能根据你的输入给出一个预期的输出吗?如果@fedorqui的答案解决了您的问题,请检查它的答案您的脚本中有许多不必要的大括号-三个级别的不必要大括号。我将脚本拆分为多行,因为单行代码(a)显示不好,(b)难以理解。使代码可读,使其易于理解是一项重要的技能。很好!显然,与整数的比较是不够的,你必须使用字符串。很好的调查和回答。+1,尽管实际上并不需要
x
。连接空字符串足以将数字强制转换为字符串。谢谢!!好建议!我知道解决方法是使用字符串变量,但我现在不知道该怎么做。很好!显然,与整数的比较是不够的,你必须使用字符串。很好的调查和回答。+1,尽管实际上并不需要
x
。连接空字符串足以将数字强制转换为字符串。谢谢!!好建议!我知道解决方案是使用字符串变量,但我现在不知道如何使用。
237708978 1 5555120825555282
237708978 1 5555120825555282
237708978 2 5555120825555281
237708978 2 5555120825555281
237708978 3 5555120825555283
239480114 4 55551208255552814
239480114 5 55551208255552812
239480114 5 55551208255552812
239480114 6 55551208255552814
239480114 7 55551208255552813
239393704 7 55551208255552813
239393704 8 555512082555528133
239393704 8 555512082555528133
239393704 9 555512082555528132
239393704 9 555512082555528132
239393704 9 555512082555528132
239393704 9 555512082555528132
239393704 10 555512082555528131
239393704 10 555512082555528131
239393704 11 555512082555528133
239393704 12 5555120825528132
239393704 12 5555120825528132
239393704 13 5555120825528133
239393704 14 5555120825528132
239393704 15 5555120825528131
239393704 15 5555120825528131
239393704 16 5555120825528133