我有一个如下所示的列表,其中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脚本,但无论如何,我都可以做到.谢谢你的帮助..
这个单行可能适合你:
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)