gpt4 book ai didi

用于查找包含特定格式的字符串并操作数据的 Linux 脚本

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:47:53 24 4
gpt4 key购买 nike

我需要创建一个 linux 脚本来搜索文件中格式如下的行:

文本:文本:文本:文本:数字:数字

所以 6 个文本/数字字符串除以 5 个分号

例如:

2f0d:011a0000:07f8:0002:1:0

我想把分号当作列分隔符

例如

Column1:Column2:Column3:Column4:Column5:Column6

然后我想像这样重新排列数据:

Column1:Column3:Column4:Column2 discarding column5 & column6

例如:

2f0d:07f8:0002:011a0000

然后我想用下划线替换分号,从每列中删除前导零并转换为大写

例如:

2F0D_7F8_2_11A0000

最终结果

在 file1 中,有这样一个条目

2f0d:011a0000:07f8:0002:1:0
E4+1
p:BSkyB,C:0000

将转换为:

2F0D_7F8_2_11A0000                    
E4+1
p:BSkyB,C:0000

另请注意,file1 中的这 3 行条目中有 100 条如果不是 1000 条

最佳答案

kent$  awk -F: -v OFS="_" 'NF==6{for(i=1;i<=4;i++){sub(/^0*/,"",$i);$i=toupper($i)};print $1,$3,$4,$2;next}7' file  
2F0D_7F8_2_11A0000
E4+1
p:BSkyB,C:0000

你可能想知道,在 awk 中:

  • sub(pat, rep,input) 将进行替换;
  • toupper(string) 将字符串变为大写(是的,还有 tolower())
  • print $1,$2 将打印由 OFS 分隔的 col1 和 col2

命令比上面的一行重要得多:

man gawk

关于用于查找包含特定格式的字符串并操作数据的 Linux 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24036278/

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