bash - 用 awk 或任何东西填补空白

标签 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

我想填补空白,这样列表是连续的,它是这样的

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/

相关文章:

python - 在 Python 脚本中运行 bash 命令

linux - 如何删除一行中某个字符后的所有文本,并在每一行上执行相同的操作?

linux - 我想在文件 config.xml 中使用 sed 或 awk 命令添加 3 行

linux - awk 在其他路径上运行时不起作用

linux - 无法从其他 shell 脚本运行 shell 脚本

linux - 使用选项参数运行脚本

linux - Bash:执行前突出显示命令(set -x)

linux - awk - 使用 printf 仅格式化一个输出字段?

unix - 将列添加到 ID 匹配的另一个文件中的文件

bash - 从后面 awk 一个巨大的日志文件直到时间戳