gpt4 book ai didi

linux - 将可变长度行转换为具有特定选定字段的多行,保留每行的第一个和最后一个分隔列

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:31:45 25 4
gpt4 key购买 nike

我的防火墙配置输出包含特定格式的数据行。我需要将此数据转换为电子表格,以将每行的 4 列组拆分为一个新列,同时保留它所在行的第一个和最后一个分隔字段,然后删除第一行。

我已经尝试使用 awkedrstr,但似乎无法弄清楚如何正确地做到这一点。每行的长度不同,但字段始终是一组 4,从第二个分隔字段开始。所以字段 2,3,4,5; 6,7,8,9; 10,11,12,13; 14,15,16,17, 等...行的长度最多可达 128 个字段

我尝试转换的数据如下所示

startoflinesampletext_25;10.2.8.13;25;10.2.8.13%2;25;10.2.8.14;25;10.2.8.14%2;25;10.2.8.15;25;10.2.8.15%2;25;10.2.8.56;25;10.2.8.56%2;25;10.2.8.57;25;10.2.8.57%2;25;endoflinesampletext

我希望的预期结果如下所示:

startoflinesampletext_25;10.2.8.13;25;10.2.8.13%2;25;endoflinesampletext
startoflinesampletext_25;10.2.8.14;25;10.2.8.14%2;25;endoflinesampletext
startoflinesampletext_25;10.2.8.15;25;10.2.8.15%2;25;endoflinesampletext
startoflinesampletext_25;10.2.8.56;25;10.2.8.56%2;25;endoflinesampletext
startoflinesampletext_25;10.2.8.57;25;10.2.8.57%2;25;endoflinesampletext

最佳答案

awk 助您一臂之力!

$ awk -F';' 'BEGIN{OFS=FS} {for(i=2;i<NF;i+=4) print $1,$i,$(i+1),$(i+2),$(i+3),$NF}' file

startoflinesampletext_25;10.2.8.13;25;10.2.8.13%2;25;endoflinesampletext
startoflinesampletext_25;10.2.8.14;25;10.2.8.14%2;25;endoflinesampletext
startoflinesampletext_25;10.2.8.15;25;10.2.8.15%2;25;endoflinesampletext
startoflinesampletext_25;10.2.8.56;25;10.2.8.56%2;25;endoflinesampletext
startoflinesampletext_25;10.2.8.57;25;10.2.8.57%2;25;endoflinesampletext

请注意,没有验证字段是四的倍数。

关于linux - 将可变长度行转换为具有特定选定字段的多行,保留每行的第一个和最后一个分隔列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57170862/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com