gpt4 book ai didi

regex - grep和sed结合时如何使用变量名?

转载 作者:行者123 更新时间:2023-11-29 09:15:12 27 4
gpt4 key购买 nike

我想在目录中的所有文件中搜索一个字符串并用不同的字符串递归替换它。我能够像这样在一个文件上使用 sed 并且它有效:

sed -i "s|${searchStr}|${replaceStr}|g" "${rootDir}"file.cs

但是当我将它与 grep 一起使用时,我没有看到文件中的更改或收到任何错误消息。

这有效:

grep -rnlis --include=*.{html,css,js,aspx} './' -e "/images/" |
xargs -i@ sed -i "s|/images/|https://example.com/Images/|I" @

尝试了这些但没有用:

searchStr='/images/'
replaceStr='https://example.com/Images/'
... -e "$searchStr" | xargs -i@ sed -i "s|$searchStr|$replaceStr|I" @

...  -e "${searchStr}" | xargs -i@ sed -i "s|${searchStr}|${replaceStr}|I" @

错误消息在表达式中与变量名称一起使用时:

: 没有那个文件或目录ult.js

: 没有那个文件或 directoryders.aspx

: 没有那个文件或目录ork.css

: 没有那个文件或目录-power.js

如何使用变量名而不是硬编码?

环境:cygwin (so Windows GNU sed/grep)

最佳答案

感谢@NeronLeVelu,这是解决方案:


searchStr='/图片/'
replaceStr='https://example.com/Images/'
grep -rnlis --include=*.{html,css,js,aspx} "$rootDir"-e "/images/"|在读取文件时;做 sed -i "s|${searchStr}|${replaceStr}|I""${File}";完成

它完美地工作并以递归方式替换 rootDir 中的 searchStr。

关于regex - grep和sed结合时如何使用变量名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33473291/

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