gpt4 book ai didi

regex - 使用 sed 和 grep/egrep 进行搜索和替换

转载 作者:行者123 更新时间:2023-12-01 02:36:36 25 4
gpt4 key购买 nike

我正在使用 egrep -R后跟一个包含大约 10 个联合的正则表达式,例如:.jpg | .png | .gif等等。这很好用,现在我想用 .bmp 替换找到的所有字符串。

我在想类似的事情

egrep -lR "\.jpg|\.png|\.gif" . | sed "s/some_expression/.jpg/" file_it_came_form

所以这里的问题是我如何在 sed 中做一个类似的联合正则表达式以及如何告诉它保存对从中获取输入的文件的更改。

最佳答案

使用这个命令:

egrep -lRZ "\.jpg|\.png|\.gif" . \
| xargs -0 -l sed -i -e 's/\.jpg\|\.gif\|\.png/.bmp/g'
  • egrep : 使用扩展正则表达式查找匹配行
  • -l : 只列出匹配的文件名
  • -R : 递归搜索所有给定目录
  • -Z :使用 \0作为记录分隔符
  • "\.jpg|\.png|\.gif" : 匹配字符串之一 ".jpg" , ".gif"".png"
  • . : 在当前目录中开始搜索
  • xargs : 以标准输入为参数执行命令
  • -0 :使用 \0作为记录分隔符。这对于匹配 -Z 很重要的 egrep并避免被输入文件名中的空格和换行符所迷惑。
  • -l : 每个命令使用一行作为参数
  • sed : s 编辑 迭代器
  • -i : 用输出替换输入文件而不做备份
  • -e : 使用以下参数作为表达式
  • 's/\.jpg\|\.gif\|\.png/.bmp/g' : 替换所有出现的字符串 ".jpg" , ".gif"".png"".bmp"
  • 关于regex - 使用 sed 和 grep/egrep 进行搜索和替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1169927/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com