如何使用 Perl 进行批量搜索和替换?

2024-01-04

我有以下脚本,它接受输入文件、输出文件和 将输入文件中的字符串替换为其他字符串并写出 输出文件。

我想更改脚本以遍历文件目录 即,脚本不应提示输入和输出文件,而应采用 作为参数的目录路径,例如 C:\temp\allFilesTobeReplaced\ 和 搜索字符串 x 并将其下的所有文件替换为 y 目录路径并写出相同的文件。

我该怎么做呢?

Thanks.

$file=$ARGV[0];

open(INFO,$file);
@lines=<INFO>;
print @lines;

open(INFO,">c:/filelist.txt");

foreach $file (@lines){
   #print "$file\n";
   print INFO "$file";
}

#print "Input file name: ";
#chomp($infilename = <STDIN>);

if ($ARGV[0]){
   $file= $ARGV[0]
}

print "Output file name: ";
chomp($outfilename = <STDIN>);
print "Search string: ";
chomp($search = <STDIN>);
print "Replacement string: ";
chomp($replace = <STDIN>);

open(INFO,$file);
@lines=<INFO>;
open(OUT,">$outfilename") || die "cannot create $outfilename: $!";

foreach $file (@lines){    
    # read a line from file IN into $_
    s/$search/$replace/g; # change the lines
    print OUT $_; # print that line to file OUT
}
close(IN);
close(OUT);

perl单线器的使用

perl -pi -e 's/original string/new string/' filename

可以与File::Find,给出以下单个脚本(这是我用于许多此类操作的模板)。

use File::Find;

# search for files down a directory hierarchy ('.' taken for this example)
find(\&wanted, ".");

sub wanted
{
    if (-f $_)
    {
        # for the files we are interested in call edit_file().
        edit_file($_);
    }
}

sub edit_file
{
    my ($filename) = @_;

    # you can re-create the one-liner above by localizing @ARGV as the list of
    # files the <> will process, and localizing $^I as the name of the backup file.
    local (@ARGV) = ($filename);
    local($^I) = '.bak';

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

如何使用 Perl 进行批量搜索和替换? 的相关文章

  • “get”在 Perl 中不起作用

    我是 Perl 新手 在过去的几天里 我制作了一些简单的脚本 通过 get 将网站的源代码保存到我的计算机上 他们做了他们应该做的事情 但不会获得论坛网站的内容 非论坛网站工作得很好 知道发生了什么事吗 这是问题块 my url http
  • jquery 删除 标签,同时保留其内容(并用
    替换

    :s)

    有没有一种好方法可以删除所有 SPAN 标签 同时保留其中的文本 并用 BR 替换所有 DIV 和 P 使用 jQuery div p Lorem ipsum dolor sit amet consectetur adipiscing el
  • str.replace 在函数中不起作用

    为什么这个函数不返回替换结果 def replacechar str str replace c str replace a y return str p abcd replacechar p print p output abcd str
  • 单台机器最快的 Perl IPC/消息队列是多少?

    我正在开发一个 主要 Perl 项目 并希望使用消息队列来相互隔离进程 我有这样的工作流程 输入 gt 接收器 gt 处理器 gt 输出 我需要每秒处理数百笔交易 所以速度是我最大的动力 对于这种类型的设置来说 最快的消息队列系统是什么 我
  • Perl 中的“@_”有什么作用?

    我浏览了一些我在 Perl 类中编写的代码 我注意到了这一点 my string my stringarray split string 我想知道两件事 变量位于括号中的第一行 这是声明多个变量时所做的事情 如果我删除它们 它仍然可以正常工
  • 有没有对数字(千)进行分组的函数?

    小 模块中是否隐藏着一个函数 它为我执行此操作 my var 23654325432 var reverse var var s d 3 K d g var reverse var I like 数字 格式 http search cpan
  • 在 Perl 中组装 XML

    我需要对 NetApp 文件管理器进行 API 调用 我知道我需要发送什么原始 XML
  • 标量值错误(使用 IO::Socket)

    这是我当前的代码 usr bin perl w use strict require IO Socket while lt gt chomp my host my header print Connecting to host n my s
  • 结束 perl 脚本而不等待系统调用返回

    我在 Linux Ubuntu 14 04 上运行一个简单的 apache Web 服务器 并使用 perl CGI 脚本处理一些请求 该脚本使用以下命令启动系统命令system函数 但我希望它立即返回 无论系统调用的结果如何 我一直在传递
  • Perl LWP::简单 HTTPS 错误

    我正在尝试获取网站的内容并打印 该代码按照我希望的方式在常规 HTTP 网站上运行 但它不适用于 HTTPS 我已经查找了此问题的修复程序 但它们在我的程序中不起作用 这是我目前拥有的代码 usr bin perl use strict u
  • 真实设备中的 Android strace

    我有以下情况 我想监控Android手机上的系统调用 所以 我编写了一个脚本来做到这一点 使用 Android 模拟器可以完美地工作 将应用程序的痕迹写入我的 Ubuntu 上的特定文件中 问题是当我连接一个真实的手机来分析它时 它在结果文
  • 为什么Perl的SUPER调用不使用箭头方法?

    我注意到 当您调用超类的方法时 您需要执行以下操作 my self class gt SUPER new 为什么不是这样 my self class gt SUPER gt new 我怀疑是因为 class gt SUPER gt new
  • 在 C# 中修改单个 XML 属性

    我已经很好地编写了 XML 文档 它看起来像这样
  • 如何在正则表达式中匹配“/*”?

    stuff d learning perl tmp txt open STUFF stuff or die Cannot open stuff for read while
  • linux + ksh + 向下舍入或向上舍入 - 浮点数

    在我的 ksh 脚本中 我只需要计算整数 有时我会得到浮点数 例如 3 49 或 4 8 等 所以我需要根据以下规则将浮点数转换为整数 示例 3 49 will be 3 2 9 will be 3 4 1 will be 4 23 51
  • 如何删除Python中特定字符之前的所有字符?

    我想删除指定字符或字符集之前的所有字符 例如 intro lt gt I m Tom 现在我想删除 lt gt before I m 或者更具体地说 I 有什么建议么 Use re sub 只需匹配所有字符即可I然后将匹配的字符替换为I r
  • 为什么我不应该使用 UNIVERSAL::isa?

    根据这个 http perldoc perl org UNIVERSAL html http perldoc perl org UNIVERSAL html 我不应该使用 UNIVERSAL isa 而应该使用 obj gt isa 或 C
  • 合并 Perl Hashref 和 unique

    我有两个 Perl 哈希值 内容如下 First VAR1 name1 gt adam bob name2 gt Miller Schumacher Second VAR1 name1 gt tina jason jeff
  • 在压缩存档内的文本文件上运行“head”,而不解压存档

    问候 我接手了之前的团队并编写了处理 csv 文件的 ETL 作业 我在 ubuntu 上结合使用 shell 脚本和 perl csv 文件很大 它们以压缩档案形式到达 解压后 很多都超过 30Gb 是的 那是 G 旧进程是在 cron
  • 为什么我只得到第一个捕获组?

    https stackoverflow com a 2304626 6607497 https stackoverflow com a 2304626 6607497 and https stackoverflow com a 370042

随机推荐

  • 权限被拒绝使用 Excel 12.0 库和 VB6 打开 Excel 文件

    我以前曾在 VB6 应用程序中多次使用 Excel 但从未遇到过如此奇怪的问题 试图完成一些非常简单的事情 我正在尝试打开 Excel xls 或 xlsx 文件并读取值 正如您可能看到的那样 当我尝试打开该文件时 收到错误 70 权限被拒
  • 将 CSV 文件内容与 filecmp 进行比较并忽略元数据

    import filecmp comparison filecmp dircmp dir local dir server comparison report full closure 我想将本地计算机上保存的所有 CSV 文件与服务器上保
  • 引入输出语句时MiniZinc找不到解决方案

    我有一个用 minizinc 编写的简单模型 我使用 gecode 首先将其编译为 flat zinc 来解决它 作为输入 模型采用一些常量 数组和矩阵 二维数组的形式 模型的输出是另一个必须满足一些约束的二维矩阵 目标优化是最小化 目标
  • 我们可以将规范引用中未明确引用的内容应用到 C++ 标准吗?

    在 C 11 标准中 最接近的草案是 N3337 http www open std org jtc1 sc22 wg21 docs papers 2012 n3337 pdf 部分1 2 规范性引用文件 says 以下参考文件是必不可少的
  • 使用 CMake 将编译器标志附加到文件

    如何使用 cmake 将编译器标志 我想附加它 而不是覆盖其他标志 添加到单个翻译单元 我尝试过 set source files properties MyFile cpp PROPERTIES CMAKE CXX FLAGS msse4
  • Android Studio 没有显示任何错误?

    我不知道发生了什么事但是当我复制粘贴代码或写一些东西时 没有显示错误 See the picture below in which i copied a code but no imports yet But Android studio
  • python:使用多处理共享巨大的字典

    我正在使用多重处理处理存储在字典中的大量数据 基本上我所做的就是加载一些存储在字典中的签名 从中构建一个共享的 dict 对象 获取 Manager dict 返回的 代理 对象 并将此代理作为参数传递给具有在多处理中执行 只是为了澄清 s
  • JAX-RS MessageBodyReader

    我正在从提供者那里了解 MessageBodyReader 方法的工作原理 我看到该方法返回一个对象 但我不确定如何从服务访问该对象 我可以获得有关如何从 reader 类返回对象的解释吗 这将帮助我为所有 DTO 应用读取规则 提前致谢
  • 头部与身体之间的间距

    我有一个简单的 html 表 如下所示 table thead tr th Column 1 th th Column 2 th tr thead tbody tr class odd first row td Value 1 td td
  • 如何在不使用 super() 的情况下访问父类的重写方法?

    如下所示 我尝试将子类的对象强制转换为其父类的对象 进展顺利 但是 当我尝试访问父类的重写方法时 它不会发生 相反 调用子类中的重写方法 我知道我可以使用 super 关键字来做到这一点 但我只是想知道为什么这不能通过强制转换来完成 这是父
  • IE10 中的 Angular UI Bootstrap 进度条

    我正在使用 Angular UI Bootstrap 来显示进度条 在 IE 中我的网站出现问题后 我用 IE 查看了Angular UI Bootstrap 网站 http angular ui github io bootstrap 并
  • 如何处理对话框中的后退按钮?

    我正在开发一个应用程序 当按下按钮时 它会打开一个带有 确定 和 取消 按钮的对话框 效果很好 当用户按下后退按钮时 我按如下方式处理 public boolean onKeyDown int keyCode KeyEvent event
  • 使用 AVPlayer 返回“非多路径连接”错误

    我正在使用 AVKit 播放 YouTube URL 我在按钮操作中有这段代码 IBAction func trailerButtonAction sender Any guard let youtubeUrl youtubeURL els
  • 具有访问权限的 Excel VBA 不会在此代码上关闭

    你好 我几分钟前刚刚发帖 有人回答了我关于 Excel 未关闭的问题 我正在使用访问权限打开工作表并添加表格 Excel 不会关闭 这会导致问题 因为当我在另一个函数中再次获取 Excel 对象时 我正在使用的工作表将无法打开 也不会对其进
  • Javascript 和 CSS 之间保持 DRY

    假设您有一个可以通过按钮切换打开和关闭的菜单 我的标准方法是为关闭的菜单编写 CSS 并编写指定 或动画 打开菜单状态的 Javascript 最近我开始接触 Active js 一个客户端 MVC 框架 它为视图类提供了用于制作 DOM
  • 将 JSON 解组为映射/字符串列表

    我想将 Json 解组到映射 字符串列表 例如 Map gt 这是我的输入 pointsOfSale pointOfSale href pointsOfSale UUID 0abc2aca 7930 4c9e 9f38 8af3d0692e
  • Spark Window函数最后一个非空值

    我们有一个用户事件的时间序列数据库 如下所示 timestamp user id event ticke type error type 2019 06 06 14 33 31 user a choose ticket ticke b NU
  • 在 MySQL 中存储 0.00001

    我有一个赚取网站 我希望用户每次点击赚取 0 00001 我知道它低于 1p 我可以使用什么类型的色谱柱 我努力了int and float但两者都不起作用 Use DECIMAL http dev mysql com doc refman
  • 将勾号 (✔) 添加到 string.xml

    我在字符串消息上添加勾号 strings xml 但是当我在移动设备上显示它时 我得到一个 框 而不是刻度线 我已直接将符号粘贴到我的字符串消息上 我们有什么办法可以处理吗 我们需要使用 unicode 值吗 添加unicode符号 u27
  • 如何使用 Perl 进行批量搜索和替换?

    我有以下脚本 它接受输入文件 输出文件和 将输入文件中的字符串替换为其他字符串并写出 输出文件 我想更改脚本以遍历文件目录 即 脚本不应提示输入和输出文件 而应采用 作为参数的目录路径 例如 C temp allFilesTobeRepla