用awk或任何东西填补空白(Filling in gaps with awk or anything)

编程入门 行业动态 更新时间:2024-10-27 10:30:24
用awk或任何东西填补空白(Filling in gaps with awk or anything)

我有一个如下所示的列表,其中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脚本,但不管怎么说都可以。 谢谢你的帮助..

I have a list such as below, where the 1 column is position and the other columns aren't important for this question.

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

I want to fill in the gaps such that the list is continuous and it reads

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

I am familiar with awk and shell scripts, but whatever way it can be done is fine with me. Thanks for any help..

最满意答案

这个单行可能适合你:

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

this one-liner may work for you:

awk '$1>++p{for(;p<$1;p++)print p"  0 0 0 0 0"}1' file

with your example:

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

更多推荐

本文发布于:2023-08-06 06:42:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1446141.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:空白   东西   awk   Filling   gaps

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!