YOU*_*YOU -1 linux bash shell awk
如何更改此文件
335
339
666665
666668
Run Code Online (Sandbox Code Playgroud)
这个结果
335
336
337
338
339
666665
666666
666667
666668
Run Code Online (Sandbox Code Playgroud)
解释:在两个具有相同长度的数字之间,它将推送错过的数字以使数字升序.很多谢谢
我相信这会做你想要的.
awk 'alen==length($1) {for (i=a;i<=$1;i++) print i}; {a=$1; alen=length(a); if (a==(i-1)) {a++}}'
Run Code Online (Sandbox Code Playgroud)
当alen(a的长度)与当前行之间的循环长度相同a并$1打印出所有缺失值时.
然后设置a新的$1,alen对的长度a,当我们处理缺失范围(当a是一样的i - 1)递增,所以我们没有重复这一数字(此处理的顺序线样病例335,339,350不重复339).
感谢@fedorqui的基本想法.
编辑:我相信这解决了我在评论中注意到的问题(我认为这也是@JohnB所指出的):
awk '{f=0; if (alen==length($1)) {for (i=a;i<=$1;i++) print i} else {f=1}} {a=$1; alen=length(a)} a==(i-1){a++} f{print; a++}'
Run Code Online (Sandbox Code Playgroud)
我觉得应该有一个更简单的方法来做到这一点,但我现在还没有看到它.
再次编辑:我最终测试的输入文件:
335
339
340
345
3412
34125
666665
666668
Run Code Online (Sandbox Code Playgroud)