linux – perl – 用另一个字符替换每个第n个(和多个)字符的出现次数

linux – perl – 用另一个字符替换每个第n个(和多个)字符的出现次数,第1张

概述有没有人知道任何unix命令/ perl脚本会插入特定字符(可以输入为十六进制(即7C)或实际字符(即|))在特定字符的第n次重复出现的位置. 即perl script.pl“,”3“|” data.txt中 将用管道替换每个第3,第6,第9 ……等逗号. 因此,如果在脚本运行之前data.txt具有以下内容: fd,3232,gfd67gf,peas,989767,jkdfnfgjhf,dh 有没有人知道任何unix命令/ perl脚本会插入特定字符(可以输入为十六进制(即7C)或实际字符(即|))在特定字符的第n次重复出现的位置.
即perl script.pl“,”3“|” data.txt中
将用管道替换每个第3,第6,第9 ……等逗号.

因此,如果在脚本运行之前data.txt具有以下内容:

fd,3232,gfd67gf,peas,989767,jkdfnfgjhf,dhdhJsk,267,ujfdsy,fuyds,637296,ldosi,fduy,873,fuisouyd,trysave,2837,ipoi

它应该在脚本运行后具有此功能:

fd,gfd67gf|peas,jkdfnfgjhf|dhdhJsk,ujfdsy|fuyds,ldosi|fduy,fuisouyd|trysave,ipoi
解决方法 小perl Hack解决问题.使用索引函数查找逗号,模块替换正确的模块,使用substr执行替换.

use strict;use warnings;while (<>) {    my $x=index($_,",");     my $i = 0;     while ($x != -1) {        $i++;         unless ($i % 3) {             $_ = substr($_,$x) ."|". substr($_,$x+1);         }        $x = index($_,$x + 1)     }     print;}

使用perl script.pl file.csv运行.

注意:您可以在while(<>)循环之前放置声明my $i,以便进行全局计数,而不是每行的单独计数.我不太清楚我在这方面理解你的问题.

总结

以上是内存溢出为你收集整理的linux – perl – 用另一个字符替换每个第n个(和多个)字符的出现次数全部内容,希望文章能够帮你解决linux – perl – 用另一个字符替换每个第n个(和多个)字符的出现次数所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/1021512.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存