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

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删除旁边有字符的数字?
或者使用perl脚本执行此转换会更容易/更好吗?

结果输出应如下所示:

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

(编辑:李大同)

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

    推荐文章
      热点阅读