帮助使用 awk 根据字段复制行

发布于 2024-10-05 16:32:39 字数 330 浏览 3 评论 0原文

我有以下数据集,其中第三个字段由 0 和 1 组成

Input 

1 2 1
2 4 0
3 3 1
4 1 1
5 0 0

我希望将数据集扩展为以下格式

  1. 根据第二个字段复制每行并

  2. 仅将第三个字段中的“新”1(复制后获得)替换为 0

我该如何执行此操作AWK?

谢谢

Output 
1 2 1
1 2 0
2 4 0
2 4 0
2 4 0
2 4 0
3 3 1
3 3 0
3 3 0
4 1 1

I have the following data set with the 3rd field consists of 0's and 1's

Input 

1 2 1
2 4 0
3 3 1
4 1 1
5 0 0

I wish to expand the data set to the following format

  1. Duplicate each row based on the 2nd field and

  2. Replace only the "new" 1's (obtain after duplication) in the 3rd field by 0

How can I do this with AWK?

Thanks

Output 
1 2 1
1 2 0
2 4 0
2 4 0
2 4 0
2 4 0
3 3 1
3 3 0
3 3 0
4 1 1

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

又怨 2024-10-12 16:32:39
awk '{print; $3=0; for (i=1; i<$2; i++) print}' inputfile

如果您想实际跳过第二个字段中带有零的记录(如您的示例所示):

awk '{if ($2>0) print; $3=0; for (i=1; i<$2; i++) print}' inputfile
awk '{print; $3=0; for (i=1; i<$2; i++) print}' inputfile

If you want to actually skip records with a zero in the second field (as your example seems to show):

awk '{if ($2>0) print; $3=0; for (i=1; i<$2; i++) print}' inputfile
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文