加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

如何在bash中查找和打印特定字符

发布时间:2020-12-15 18:58:12 所属栏目:安全 来源:网络整理
导读:我有这样的文件: AA,A=14,B=356,C=845,D=4516BB,A=65,C=255,D=841,E=5133,F=1428CC,A=88,B=54,C=549,F=225 我永远不知道在行中是否缺少A,B,C或D值.但我需要将此文件转换为: AA,D=4516,-,-BB,F=225 因此,如果缺少任何值打印 – 标记.我的计划具有相同数量的
我有这样的文件:
AA,A=14,B=356,C=845,D=4516
BB,A=65,C=255,D=841,E=5133,F=1428
CC,A=88,B=54,C=549,F=225

我永远不知道在行中是否缺少A,B,C或D值.但我需要将此文件转换为:

AA,D=4516,-,-
BB,F=225

因此,如果缺少任何值打印 – 标记.我的计划具有相同数量的列以便于解析.我更喜欢awk解决方案.感谢您的任何建议或帮助.

我的第一次尝试是:

awk '{gsub(/[,]/,"t")}; BEGIN{ FS = OFS = "t" } { for(i=1; i<=NF; i++) if($i ~ /^ *$/) $i = "-" }; {print $0}'

但后来我注意到,缺少一些价值观.

编辑:

从我的标题我知道有值A,C,D,E,F ……

$cat file.txt
AA,F=225

$perl -F,-le '@k=(A..F);
   $op[0]=$F[0]; @op[1..6]=("-")x6;
   $j=0; for($i=1;$i<=$#F;){ if($F[$i] =~ m/$k[$j++]=/){$op[$j]=$F[$i]; $i++} }
   print join(",",@op)
   ' file.txt
AA,F=225

> -F,打开输入线,并保存到@F数组> -l从输入行中删除换行符,为输出添加换行符> @ k =(A..F);用A,B等初始化@k数组到F> $op [0] = $F [0]; @op [1..6] =( “ – ”)5233;使用@F的第一个元素初始化@op数组,剩余的六个元素为 – > for循环遍历@F数组,如果元素与相应索引中的@k数组元素匹配,后跟=,则更改@op元素> print join(“,”,@ op)打印@op数组,作为分隔符

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读