perl – 查找数字,并删除等于此数字的相邻字符
发布时间:2020-12-15 21:46:52 所属栏目:大数据 来源:网络整理
导读:我的4列输出的一部分如下所示: 5 cc1kcc1kc 5 cc1kcc1kc5 cc2ppggg 5 cc2ppggg6 ccg12qqqqqqqqqqqqggg 10 ccccg11qqqqqqqqqqqggggg 3 4qqqqcgc1q 12 cgccgccgccgc 我只想改变第二和第四列,有没有办法用awk / sed删除旁边有字符的数字? 或者使用perl脚本执
我的4列输出的一部分如下所示:
5 cc1kcc1kc 5 cc1kcc1kc 5 cc2ppggg 5 cc2ppggg 6 ccg12qqqqqqqqqqqqggg 10 ccccg11qqqqqqqqqqqggggg 3 4qqqqcgc1q 12 cgccgccgccgc 我只想改变第二和第四列,有没有办法用awk / sed删除旁边有字符的数字? 结果输出应如下所示: 5 ccccc 5 ccccc 5 ccggg 5 ccggg 6 ccgggg 10 ccccgggggg 3 cgc 12 cgccgccgccgc 解决方法
从字面上理解问题,这将删除字段2和4中的下n个字符,用于字段中嵌入的任何n.
perl -lane 'for $i (1,3) {@nums = $F[$i] =~ /(d+)/g; for $num (@nums) {$F[$i] =~ s/$num.{$num}//}}; print join("t",@F)' 其他答案删除数字,后面的所有字符都相同. 为了说明我的答案与其他答案之间的区别,请使用以下输入: 6 ccg8qqqqqqqqqqqqggg 10 ccccg3qqqqqqqqqqqggggg 我的版本输出: 6 ccgqqqqggg 10 ccccgqqqqqqqqggggg 他们输出这个: 6 ccgggg 10 ccccgggggg (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |