无需正则表达式即可简单搜索和替换

2024-03-11

我有一个包含各种通配符的文件,我希望能够从(Bash)shell 脚本中替换它。我有以下内容,该内容非常有效,直到其中一个变量包含正则表达式特有的字符:

VERSION="1.0"
perl -i -pe "s/VERSION/${VERSION}/g" txtfile.txt    # No problems here

APP_NAME="../../path/to/myapp"
perl -i -pe "s/APP_NAME/${APP_NAME}/g" txtfile.txt  # Error!

因此,我想要的只是执行文字文本替换而不是正则表达式。是否有 Perl 或其他工具的简单单行调用可以执行此操作?


执行此操作的“正确”方法是转义 shell 变量的内容,以便它们不会被视为特殊的正则表达式字符。你可以在 Perl 中使用 \Q 来完成此操作,如下所示

s/APP_NAME/\Q${APP_NAME}/g

但是当从 shell 脚本调用时,反斜杠必须加倍以避免丢失,如下所示

perl -i -pe "s/APP_NAME/\\Q${APP_NAME}/g" txtfile.txt

但我建议用 Perl 编写整个脚本会容易得多

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

无需正则表达式即可简单搜索和替换 的相关文章

  • 如何剪切(1) 个驼峰字?

    Bash 中有没有一种简单的方法可以将驼峰式单词拆分为其组成词 例如 我想将 aCertainCamelCasedWord 拆分为 a certain Camel Cased Word 并能够选择我感兴趣的那些字段 当单词分隔符是下划线时
  • 此 bash 命令在 Makefile 中未正确运行

    在 Makefile 里面我有这样的 release version poetry version cut f2 d echo release version 如果我运行 我的终端中的语句将毫无问题地运行 gt version poetry
  • 找不到 DBI.pm

    我正在尝试启动这个脚本 usr bin perl use DBI my dbh DBI gt connect dbi Oracle host lonlin2 sid TIMFX1AD port 1524 xbsesdbo xbsesdbo1
  • bash 中的“declare -r”和“readonly”有什么区别?

    在 bash 中 有什么区别declare r and readonly declare r a a1 readonly b b1 我不知道该选择哪个 tl dr readonly使用默认范围global甚至在函数内部 declare使用范
  • 规范化 solaris 上的路径名

    在 GNU 系统上我只会使用readlink f SOME PATH 但 Solaris 没有 readlink 我更喜欢在 bash 中运行良好的程序 但如果需要的话其他程序也可以 Edit 到目前为止 我想到的最好的方法是使用 cd 和
  • 未找到命令“ember”

    看来我搞砸了 ember cli 安装 我已经使用 sudo 安装了 npm 但是在阅读了 npm 上 ember cli 和 sudo 的一些问题后 我按照此处的说明卸载并重新安装https gist github com isaacs
  • Parse::RecDescent 语法未按预期工作

    我所能做的就是 STRING PARAMS VARIABLE 和 FUNCNAME FUNCTION 似乎有问题 但我就是看不到它 use strict use Parse RecDescent RD ERRORS 1 Make sure
  • Bash 方法的返回值总是模 256

    我有一个 bash 脚本方法 它返回输入值 然而 返回值始终是模 256 的值 我用 google 搜索了一段时间 发现this http www tldp org LDP abs html exitcodes html文章说它总是以 25
  • 如何在html中设置按钮的文本大小

    您好 我想在我的网站上有一个按钮 并且我想调整按钮上的文本大小 我该怎么做呢 我的代码如下
  • 在 FOR 循环中打印唯一值

    我有两个文件 myresult 和 annotation 两个文件中的数据似乎是范围 但事实并非如此 这就是为什么我无法将其存储在数组中 我需要使用拆分运算符 以便我可以在 for 循环中使用它并进行比较 现在我需要打印 i myresul
  • 文本处理问题:删除其中一列不包含特定值的行

    我有一个制表符分隔的文件 如下所示 input sequence match sequence score receptor group epitope antigen organism ASRPPGGVNEQF ASRPPGGVNEQF
  • 由于 lpcap,CPAN 安装 Net::Pcap 和 Packet 模块失败

    最近 我尝试通过 cpan 安装 perl 模块 Net Packet 和 Net Pcap 但它抱怨找不到 pcap 库 所以我正在搜索 cpan 在安装模块时是否接受外部 lib include 目录 但到目前为止还没有运气 looki
  • 在 ActionScript 3 中在形状上绘制文本

    有没有办法仅使用 ActionScript 在 DisplayObject 或 Shape 中绘制文本 我在网上找到的唯一方法是创建 TextField 但我无法将 TF 添加到 DisplayObject 或 Shape Edit 解决了
  • Perl 是否有相当于 Python 的 `if __name__ == '__main__'` 的功能?

    有没有一种方法可以确定当前文件是否是 Perl 源中正在执行的文件 在 Python 中 我们使用以下结构来做到这一点 if name main This file is being executed raise NotImplemente
  • powershell stdin 管道和重定向

    你好 我一直在制作一个小的跨平台脚 本 我可以将其卷曲并通过管道传输到bash和Powershell中 基本思想是服务器向解释器发送一个命令 然后它给出一个命令将所有输出重定向到标准输出 bash 中的一个例子是 some commands
  • 使用正确的头打印文件名

    我想获取当前目录中的文件名 使得文件的第一行等于myWord 我想结合find type f命令与 exec选项与head 1 filename但无济于事 有没有一些聪明的 单行的解决方案来解决这个问题 您可以使用find with awk
  • Perl 的反引号、system 和 exec 有什么区别?

    有人可以帮帮我吗 在 Perl 中 以下之间有什么区别 exec command and system command and print command 还有其他方法可以运行 shell 命令吗 exec 执行命令并一去不复返 这就像一个
  • PHP:STR 替换为链接

    我有这个 PHP 聊天框 如果我在聊天框中键入链接 它不会将其显示为链接 我如何使用 STR 替换来执行此操作 它应该响应诸如 http http com nl www www 之类的内容 我的其他 STR 替换行如下所示 bericht
  • 使用带有curl 的内部字段分隔符

    当我做 ls IFS l 我得到了我期望的输出 当我做 curl IFShttp www google com 我不 我是否误解了内部字段分隔符 如何在不使用任何空格字符的情况下运行curl 命令 您需要将变量放在大括号内 否则 shell
  • awk 子串单个字符

    这是columns txt aaa bbb 3 ccc ddd 2 eee fff 1 3 3 g 3 hhh i jjj 3 kkk ll 3 mm nn oo 3 我可以找到第二列以 b 开头的行 awk if substr 2 1 1

随机推荐

  • __attribute__((constructor)) 调用顺序混乱

    答案here https stackoverflow com questions 8433484 c static initialization vs attribute constructor表明 attribute constructo
  • 如何在 rmarkdown Rmd 文件中包含摘要

    In a Rmd文件的标题如下 我想包含一个摘要 所以我尝试了标准的 LateX 文章形式 abstract This paper explores a variety of topics related to the question o
  • 我可以在本地主机环境上测试 shibboleth IdP 和 SP 吗?

    我可以在本地主机环境上测试 shibboleth IdP 和 SP 吗 我只有一台电脑 Win7 Yes你当然可以 在该计算机中下载并安装 SP 和 idP 配置两者的元数据以与本地主机通信 或者为了更好地轻松使用 SP 和 idP 的两个
  • 如何在 Visual Studio 2019 中自动添加分号到行尾

    我的问题类似于如何在 Visual Studio 代码中在行尾添加分号 https stackoverflow com questions 30118344 how to add semicolon to the end of the li
  • 如何以编程方式设置或清除 32BIT 标志?

    编译时 我总是将其设置为 Any CPU 然而 有些客户没有所需二进制文件的 64 位版本 即使在 x64 系统上运行也是如此 在这些情况下 我要求他们使用 corflags exe 32BIT 选项修改我的二进制文件 http msdn
  • 在 Racket 源代码中选择学生语言

    我正在尝试为 DrRacket 编写一个源文件 指定其中一种语言如何设计教学语言的程序 see 球拍文档 http docs racket lang org drracket htdp langs html 我知道我可以在 DrRacket
  • Android 上符合 OpenGL-ES 2.0 所需的最小纹理大小?

    某个硬件是否需要支持最小纹理尺寸才能符合 OpenGL ES 2 0 规范 GL MAX TEXTURE SIZE 值必须至少为 1024 或 2048 或类似的值 我想知道这一点的原因是因为我正在研究使用着色器的东西 因此必须是 Open
  • 通过 Selenium Grid 运行 Selenium IDE 测试

    首先我应该说 我感到遗憾和痛苦noob 但我正在努力改变这一点 我不懂任何编程语言 但通过做足够的研究来完成我需要完成的任何工作 从而成功地 让事情发生 不管怎样 我一直在使用 Selenium IDE 创建 Selenium 测试 但在通
  • MySQL PHPMyAdmin 错误 #1062 - 键“PRIMARY”重复条目“0”

    现在我想添加一个主键id列 但它抛出错误 1062 密钥 PRIMARY 重复输入 0 我已经尝试过这个 向现有表添加主键 https stackoverflow com questions 11794659 add primary key
  • 选择用于实现分布式消息传递算法的编程语言

    基本上 我想实现以下算法并分析使用这些算法构建的系统在不同条件下的行为 八卦协议 多个paxos 一致的散列 我的兴趣在于这些算法 我基本上是在寻找一种编程语言 可以让我快速编写这些算法并深入理解这些算法 我应该选择哪种语言 Java Sc
  • 如何签署由第 3 方提供的发布 iphone 二进制文件?

    我收到了一家外包公司为我工作的公司开发的 iPhone 应用程序 我无权访问源代码 只能访问已编译的二进制文件 我希望能够使用我们的证书 配置信息等对其进行签名 以便我可以将其提交到应用程序商店 我该怎么做呢 我知道的存在codesign但
  • 如何切换到“更多”视图中的选项卡栏项目?

    我正在用 Objective C 为 Iphone Ipad 编写一个应用程序 我在标签栏的 更多 中有一些项目 我想切换到其中一种视图 我该怎么做 通常我会使用 selectedIndex 但它在 更多 选项卡上不起作用 要从更多屏幕选择
  • 使用 for 迭代 python 列表时如何指定类型/类名

    我知道 python 是动态类型语言 但想知道这是否可能 假设我有一个名为 people 的类 Person 的列表 people people append Person james for p in people p name p na
  • PHP(或其他):处理“不可能发生”的异常的策略

    考虑以下代码 class C throws InvalidArgumentException function classCreateInstance class if is string class throw new InvalidAr
  • mysql查询中的正则表达式

    我有 mysql 表值 例如 1 2 1 2 3 1 4 5 1 4 5 12 15 15 45 75 1 5 15 25 35 55 55 65 75 我想选择哪些行的编号为 5 而不是 15 25 或 35 我尝试过使用 LIKE 查询
  • 材质按钮 切换组单选

    我怎样才能强制材质按钮切换组表现得像 RadioGroup 一样 总是至少有一个选定的项目 环境setSingleSelection true 如果您单击组中的按钮两次 还可以增加不选择任何内容的可能性 这是我的代码
  • 暂时禁用 Lollipop CheckBox 上的动画

    我有一个 ListView 其中包含复选框的行 此 ListView 附加了过滤行为 它通过设置新数据来回收这些行 通过一个简单的setData 方法 随着过滤条件的变化 发生这种情况时 任何具有以下属性的回收行checked状态更改将更新
  • Hibernate 4 和 joda-time

    他们婚姻幸福吗 我使用的是最新版本的 hibernate 4 和 1 3 版本joda 时间休眠支持 http www joda org joda time hibernate 我也认为这是当前的最新版本 使用注释时 一切似乎都工作正常 按
  • 使用 Rspec 测试“创建后”

    我正在尝试使用 Rspec 测试 创建后 操作 代码如下 def valid attributes zone gt Flymgr Zone new countries gt Flymgr ZoneCountry first name gt
  • 无需正则表达式即可简单搜索和替换

    我有一个包含各种通配符的文件 我希望能够从 Bash shell 脚本中替换它 我有以下内容 该内容非常有效 直到其中一个变量包含正则表达式特有的字符 VERSION 1 0 perl i pe s VERSION VERSION g tx