用awk或任何东西填补空白

jef*_*amp 5 bash awk

我有一个如下所示的列表,其中1列是位置,其他列对此问题不重要.

1  1 2 3 4 5
2  1 2 3 4 5
5  1 2 3 4 5
8  1 2 3 4 5
9  1 2 3 4 5
10 1 2 3 4 5
11 1 2 3 4 5
Run Code Online (Sandbox Code Playgroud)

我想填补空白,以便列表是连续的并且可以读取

1  1 2 3 4 5
2  1 2 3 4 5
3  0 0 0 0 0
4  0 0 0 0 0 
5  1 2 3 4 5
6  0 0 0 0 0 
7  0 0 0 0 0 
8  1 2 3 4 5
9  1 2 3 4 5
10 1 2 3 4 5
11 1 2 3 4 5
Run Code Online (Sandbox Code Playgroud)

我熟悉awk和shell脚本,但无论如何,我都可以做到.谢谢你的帮助..

Ken*_*ent 7

这个单行可能适合你:

awk '$1>++p{for(;p<$1;p++)print p"  0 0 0 0 0"}1' file
Run Code Online (Sandbox Code Playgroud)

用你的例子:

kent$  echo '1  1 2 3 4 5
2  1 2 3 4 5
5  1 2 3 4 5
8  1 2 3 4 5
9  1 2 3 4 5
10 1 2 3 4 5
11 1 2 3 4 5'|awk '$1>++p{for(;p<$1;p++)print p"  0 0 0 0 0"}1'         
1  1 2 3 4 5
2  1 2 3 4 5
3  0 0 0 0 0
4  0 0 0 0 0
5  1 2 3 4 5
6  0 0 0 0 0
7  0 0 0 0 0
8  1 2 3 4 5
9  1 2 3 4 5
10 1 2 3 4 5
11 1 2 3 4 5
Run Code Online (Sandbox Code Playgroud)