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

2023-12-01

有谁知道任何unix命令/perl脚本会在特定字符第n次重复出现的位置插入特定字符(可以作为十六进制(即7C)或实际字符(即|)输入)。 IEperl 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,try
save,2837,ipoi

运行脚本后应该会出现以下内容:

fd,3232,gfd67gf|
peas,989767,jkdfnfgjhf|
dhdhjsk,267,ujfdsy|fuyds,637296,ldosi|fduy,
873,fuisouyd|try
save,2837,ipoi

小 perl hack 解决了这个问题。使用index函数查找逗号、模数以替换正确的逗号,以及substr执行替换。

use strict;
use warnings;

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

运行与perl script.pl file.csv.

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

perl - 用另一个字符替换每第 n 次(和多次)出现的字符 的相关文章

  • 当我启动 Windows 命令提示符时,我做了什么导致环境变量发生更改?

    我使用的是 Windows 10 x64 我安装了 Anaconda3 如果我启动 C Windows system32 cmd exe 时没有运行任何其他内容 并且在我可以看到的后台中没有任何有趣的内容 则以下内容将添加到控制面板 UI
  • 使用 xlib 在屏幕顶部绘图

    我想在屏幕上的所有窗口顶部绘制一些图元 我在 C 中找到了一些代码并尝试将其移植以使用 python 的 xlib from Xlib display import Display from Xlib import X from Xlib
  • .net-core:ILDASM / ILASM 的等效项

    net core 是否有相当于 ILDASM ILASM 的功能 具体来说 我正在寻找在 Linux 上运行的东西 因此为什么是 net core ildasm 和 ilasm 工具都是使用此存储库中的 CoreCLR 构建的 https
  • 从 Xlib 转换为 xcb

    我目前正在将我的一个应用程序从 Xlib 移植到 libxcb 但在查找有关我有时使用的 XInput2 扩展的信息时遇到了一些麻烦 libxcb 中有 XInput2 实现吗 如果是的话 在哪里可以找到文档 目前我在使用此功能时遇到问题
  • 如何从 HTTP URL 下载文件?

    我知道如何使用wget从FTP下载但我无法使用wget从以下链接下载 如果您将其复制并粘贴到浏览器中 它将开始下载 但我想将它直接下载到我们的服务器 这样我就不需要将它从我的桌面移动到服务器 我该怎么做 Thanks 这就是我所做的 wge
  • SVN 提交后挂钩在提交后不会运行

    我的服务器上设置了 SVN 存储库 并且遇到提交后问题 我在 iMac 上使用 SmartSVN 作为客户端 我通过 SmartSVN 的 ssh svn 连接 我能够成功连接到 SVN 并对其进行更改 但从 SVN 客户端提交后 我的提交
  • 与 pthread 的进程间互斥

    我想使用一个互斥体 它将用于同步对两个不同进程共享的内存中驻留的某些变量的访问 我怎样才能做到这一点 执行该操作的代码示例将非常感激 以下示例演示了 Pthread 进程间互斥体的创建 使用和销毁 将示例推广到多个进程作为读者的练习 inc
  • 在 bash 脚本中检测鼠标点击

    我想知道如何在后台运行 bash 脚本 每当用户单击鼠标时该脚本都会执行某些操作 即运行脚本或命令或其他任何内容 即使终端关闭 我也希望它继续运行 有任何想法吗 谢谢 如果您使用的是X11 您可以尝试xdotool捕获鼠标事件 它会是这样的
  • 按日期合并多个日志文件,包括多行

    我有几个包含所有以时间戳开头的行的日志 因此以下内容可以按预期合并它们 cat myLog1 txt myLog2 txt sort n gt combined txt 问题是 myLog2 txt 还可以包含没有时间戳的行 例如 java
  • 为什么opencv videowriter这么慢?

    你好 stackoverflow 社区 我有一个棘手的问题 我需要你的帮助来了解这里发生了什么 我的程序从视频采集卡 Blackmagic 捕获帧 到目前为止 它工作得很好 同时我用 opencv cv imshow 显示捕获的图像 它也工
  • Perl 三元条件运算符

    我正在尝试在脚本中编写更高效的代码 并且有时会实现三元条件运算符 我不明白为什么在循环中使用三元条件运算符时会得到额外的结果 usr bin perl use strict use warnings my array Serial 123
  • 如何查找哪个 Yocto 项目配方填充图像根文件系统上的特定文件

    我经常与 Yocto 项目合作 一个常见的挑战是确定文件为何 或来自什么配方 包含在 rootfs 中 这有望从构建系统的环境 日志和元数据中得出 理想情况下 一组命令将允许将文件链接回源 即配方 我通常的策略是对元数据执行搜索 例如gre
  • 是否有理由在 Perl 中使用 open(...) 的双参数形式?

    是否有任何理由使用双参数形式open 在 Perl 中而不是三个或更多参数的版本 我能想到的唯一原因是明显的观察结果 即两个参数的形式更短 但是假设冗长不是问题 是否有任何其他原因会让您选择双参数形式open 一参数和二参数 open 应用
  • cdc_acm:无法设置 dtr/rts - 无法与 USB cdc 设备通信

    我试图使用 pic24fj128gb206 枚举 usb cdc 设备 设备似乎已正确枚举 但是当我将设备连接到 Linux PC 时 我从内核收到以下警告消息 cdc acm 1 8 1 6 7 1 0 failed to set dtr
  • python的shutil.move()在linux上是原子的吗?

    我想知道python的shutil move在linux上是否是原子的 如果源文件和目标文件位于两个不同的分区上 行为是否不同 或者与它们存在于同一分区上时的行为相同吗 我更关心的是如果源文件和目标文件位于同一分区上 shutil move
  • 尽管我已在 python ctypes 中设置了信号处理程序,但并未调用它

    我尝试过使用 sigaction 和 ctypes 设置信号处理程序 我知道它可以与python中的信号模块一起使用 但我想尝试学习 当我向该进程发送 SIGTERM 时 但它没有调用我设置的处理程序 只打印 终止 为什么它不调用处理程序
  • 从 Linux 内核模块中调用用户空间函数

    我正在编写一个简单的 Linux 字符设备驱动程序 以通过 I O 端口将数据输出到硬件 我有一个执行浮点运算的函数来计算硬件的正确输出 不幸的是 这意味着我需要将此函数保留在用户空间中 因为 Linux 内核不能很好地处理浮点运算 这是设
  • 使用正则表达式提取两个短语之间的所有单词[重复]

    这个问题在这里已经有答案了 我正在尝试使用以下正则表达式提取两个短语之间的所有单词 b item W w W 0 2 1 one W w W 0 3 business b b item W w W 0 2 3 three W w W 0 3
  • 在perl中更改多维哈希的第一个键

    我在 perl 中有一个多维哈希 我想更改所选值的第一个键 例如 我有哈希 my Hash1 Hash1 1 12 1 Hash1 1 10 1 Hash1 2 31 1 Hash1 3 52 1 Hash1 3 58 1 Hash1 4
  • ansible unarchive 模块如何查找 tar 二进制文件?

    我正在尝试执行一个 ansible 剧本 该剧本的任务是利用unarchive模块 因为我是在 OSX 上执行此操作 所以我需要使用它gnu tar 而不是bsd tar通常与 OSX 一起提供 因为BSD tar 不受官方支持 https

随机推荐

  • 滑动视图寻呼机时显示工具栏。 [协调器布局]

    在我的应用程序中 我使用带有 3 个片段的 viewpager 其中两个我有reuclerviews 我利用了新的协调器布局 并在回收器视图上滚动时使工具栏隐藏 显示 我的问题如下假设用户正在片段 A 中的 recyclerview 列表上
  • 将月份添加到日期时刻 js

    我正在尝试使用 js 将月份添加到给定日期 fd start date 有开始日期 但 moment js 返回 无效日期 我正在使用日期选择器以 YYYY MM DD 格式选择日期 fd start date click function
  • Java Spring WebFlux 中从 REST 控制器返回(大)文件的正确反应模式是什么?

    情况 我有一个非反应式遗留库 它需要OutputStream并将其输出写入其中 方法签名类似于void produceData OutputStream stream 我想通过 Web 服务将方法的输出公开为 PDF 文件 文件有时可能非常
  • 为什么某些 Matlab 类方法需要“显然”不必要的输出参数 [重复]

    这个问题在这里已经有答案了 在改进我的项目代码几个月后 我终于需要定义一个新类 必须翻阅以前的类定义来刷新约定 我注意到所有构造函数和属性设置器都有一个输出参数 即使没有为其分配任何内容 例如 function o myConstructo
  • 如何在 Visual Studio 2015 中禁用 PDB 文件创建?

    IDE 我使用 Visual Studio 2015 Update 3 语言 C NET 4 5 Issue 当我编译发布解决方案时 会生成 PDB 文件 问题 如何在 Visual Studio 2015 中禁用 PDB 文件创建 在主菜
  • Cassandra 从 2.0.x 升级到 2.1.x 或 3.0.x

    我搜索过这个问题的以前版本 但似乎都不适合我的情况 我有一个运行 2 0 x 的现有 Cassandra 集群 我已分配了新的虚拟机 因此我不想升级现有的 Cassandra 节点 相反 我想迁移到 a 新虚拟机和 b 更新版本的 Cass
  • 为什么使用 pip 而不是 easy_install?

    A tweet reads 不要使用 easy install 除非你 就像在自己脸上捅刀一样 使用点 为什么使用 pip 而不是 easy install 难道不是错误主要在于 PyPI 和包作者 如果作者将垃圾源 tarball 例如
  • DateTime.ParseExact 抛出格式异常

    我有一个以下格式的日期 hh mm ss ffff dd MM yy 例如 20 58 54 5854 28 07 07 但是当我尝试解析该日期时对于 DateTime ParseExact 它会因格式异常而失败 我的确切代码行是 var
  • for循环中的索引变量(_i)?

    看一下这个简单的代码 eat x gt console log nom x dog only eats every second cat feast cats gt eat cat for cat in cats when i 2 0 fe
  • 使用鼠标绘制平移图 - Jfreechart

    Can we implement the pan functionality as a mouse drag event in JfreeChart Right now I press CTRL and drag my mouse to p
  • 在 R 中创建等和的组

    我试图将 data frame data table 的一列分为三组 所有组的总和相等 数据首先按照从最小到最大的顺序排列 这样第一组将由大量具有较小值的行组成 而第三组将由少量具有较大值的行组成 这是通过以下方式实现的 test lt d
  • 如何在 SQL 中将换行符转换为 BR 后保存 Textarea 输入

    我在管理面板中使用 ckeditor 但在用户提交表单中使用简单的文本框 以便用户可以输入文本并提交 问题是 当用户在带有换行符的文本区域中输入文本时 它会保存为 SQL 中的文本 我想在sql的每一行后面添加BR 例如用户提交 F R I
  • R 跳过 /dev/stdin 中的行

    我有一个包含数字列表的文件 自己制作 for x in seq 10000 do echo x done gt file gt R q e x lt read csv file header F summary x gt x lt read
  • 想要:不受 AbandonedMutexException 影响的跨进程同步

    我有几个线程获取互斥体然后终止 互斥体存储在主存储库中 并在程序存在时正确释放 但是 当分配互斥锁的线程存在时 该互斥锁会自动释放 并随后获取 AbandonedMutexException 也根据文档 如何避免此异常 并在分配线程完成后继
  • 摘要 {Hmisc} 删除类别?

    我正在尝试获取包含百分比的交叉表这个文件 using Hmisc 但为什么是summary 从变量 OCCUPATION 中删除类别 其他 library Hmisc summary ID OCCUPATION data df method
  • 如何在管理中的文本区域上默认启用所见即所得?

    如何在文本区域上默认启用所见即所得 我的意思是 我不想单击所见即所得按钮来显示带有tinyMCE的区域 我直接想要这个 经过一番研究后我发现了它 1 将此代码放入您希望编辑器直接显示的 phtml文件中 2 在代码第6行可以看到elemen
  • 为什么 autoload 无法加载 gems 文件

    我正在尝试使用这个在 ruby 中阅读电子邮件Gmail 宝石 When I require gmail 在 IRB 或脚本中 我收到此错误 Library Ruby Gems 1 8 gems gmail 0 4 0 lib gmail
  • 绑定和样式不适用于Win8?

    我从 TextBox 派生并将其命名为 MyTextBox 在我的 LayoutAwarePage 上 我创建了 2 个 SolidColorBrush 道具 MyBackground 和 MyBorder 在该页面的 Xaml 中 我编写
  • 为什么 kubelet 运行在 kubernetes 主节点上?

    我已经使用 kubeadm 在本地笔记本电脑上部署了一个 kubernetes 集群 1 个主节点和 2 个工作节点 请注意 kubelet 也在主节点上运行 从我之前读过的文章来看 只有工作节点上才需要 kubelet 有人可以告诉我为什
  • perl - 用另一个字符替换每第 n 次(和多次)出现的字符

    有谁知道任何unix命令 perl脚本会在特定字符第n次重复出现的位置插入特定字符 可以作为十六进制 即7C 或实际字符 即 输入 IEperl script pl 3 data txt将用管道替换每个第 3 个 第 6 个 第 9 个 等