我有一个如下所示的列表,其中第 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
我想填补空白,这样列表是连续的,它是这样的
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
我熟悉 awk 和 shell 脚本,但无论以何种方式完成,我都觉得没问题。 感谢您的帮助..
最佳答案
这条单线可能适合你:
awk '$1>++p{for(;p<$1;p++)print p" 0 0 0 0 0"}1' file
以你的例子:
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
关于bash - 用 awk 或任何东西填补空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17581798/