regex - 如何在文件中搜索正则表达式,然后就地修改所有出现的地方?

标签 regex linux bash sed in-place

我想在文件中搜索与此正则表达式匹配的行:AB[0-9][0-9]-XYZ 然后简单地编辑文件,以便 char 字符串现在具有它前面的文字字符 Linux\ 。例如,假设文件中存在以下字符串:

AB62-XYZ
AB10-XYZ  

我只是需要那些成为:

Linux\AB62-XYZ
Linux\AB10-XYZ 

澄清一下,我要查找的字符串可以而且确实出现在文件中的任何位置,不一定在一行的开头。

最佳答案

Ex/Vi 编辑器中的类似解决方案:

ex -s +'%s/\(AB[0-9][0-9]-XYZ\)/Linux\\\1/g' -cwq foo.txt

sed 相比,它更兼容,因为 in-place (-i) 选项是非标准的 FreeBSD 扩展,所以它在 Unix 和 Unix 之间有不同的语法Linux.

关于regex - 如何在文件中搜索正则表达式,然后就地修改所有出现的地方?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32980192/

相关文章:

javascript - Isracard(以色列卡)的正则表达式

c++ - 如何获取 ELF 二进制文件中与 objdump 输出的标签相对应的文件偏移量?

Bash Tab 补全提示隐藏的 SVN 文件

javascript - AngularJS 过滤器从前面搜索术语而不是整个属性

arrays - 在PowerShell中针对大型阵列的大量正则表达式删除非常慢

linux - 为什么我得到 "s6-log: fatal: unable to open_append/run/service/app/lock: Not a directory"?

linux - 仅在命令 shell 上安装 blender 2.7 linux(无 X)

ruby-on-rails - 执行脚本并在 View 中显示输出/进度 [Ruby/Sinatra(Rails)]

bash - psql : warning: extra command-line argument "from" ignored

html - 如何修改正则表达式以删除所有后跟 CR 或 LF 的字符串