正则表达式 – 从逗号分隔文件中删除额外逗号
发布时间:2020-12-14 05:55:57 所属栏目:百科 来源:网络整理
导读:我有一个逗号分隔文件,有12列. 第5列和第6列存在问题(第5列和第6列中的文本相同,但它们之间可能有额外的逗号),其中包含额外的逗号. 2011,123456,1234567,12345678,Hey There,How are you,882864309037,ABC ABCD,LABACD,1.00000000,80.2500000,One Two 所以在
我有一个逗号分隔文件,有12列.
第5列和第6列存在问题(第5列和第6列中的文本相同,但它们之间可能有额外的逗号),其中包含额外的逗号. 2011,123456,1234567,12345678,Hey There,How are you,882864309037,ABC ABCD,LABACD,1.00000000,80.2500000,One Two 所以在上面的例子中“嘿那里,你好吗”不应该有逗号. 我需要删除第5和第6列中的额外逗号. 解决方法
如果您总想删除第5个逗号,请尝试
sed 's/,//5' input.txt 但是你说,它可能有额外的逗号.你必须提供一个逻辑如何找出是否有额外的逗号. 如果你知道逗号的数量,你可以使用awk.这已经证明是一个很好的练习,我相信其他人会提出一个更优雅的解决方案,但我会分享我的: awk -f script.awk input.txt 用script.awk: BEGIN{ FS="," } NF<=12{ print $0 } NF>12{ for (i=1; i<=4; i++) printf $i FS for (j=0; j<2; j++){ for (i=0; i<=(NF-12)/2; i++){ printf $(i+5) if (i<(NF-12)/2) printf "_" else printf FS } } for (i=NF-5; i<=NF; i++) printf $i FS printf "n" } 首先,我们将字段分隔符设置为,.如果我们计算的数量少于或等于12个字段,一切都很好,我们只需打印整行.如果有超过12个字段,我们首先打印前4个字段(再次使用字段分隔符),然后我们打印两次字段5(和字段6),但不是打印,而是用_交换它.最后,我们打印剩下的字段. 正如我所说,可能有更优雅的解决方案.我想知道其他人出现了什么. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |