加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式 – 当组合grep和sed时如何使用变量名?

发布时间:2020-12-14 05:47:24 所属栏目:百科 来源:网络整理
导读:我想搜索一个字符串,并在递归的目录中的所有文件中用不同的字符串替换它.我能够像这样在一个文件上使用sed并且它可以工作: sed -i "s|${searchStr}|${replaceStr}|g" "${rootDir}"file.cs 但是当我使用它与grep时,我没有看到文件中的更改或获取任何错误消息
我想搜索一个字符串,并在递归的目录中的所有文件中用不同的字符串替换它.我能够像这样在一个文件上使用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" @

与表达式中的变量名一起使用时出现错误消息:

:没有这样的文件或directoryult.js

:没有这样的文件或directoryders.aspx

:没有这样的文件或directoryork.css

:没有这样的文件或directoryal-power.js

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

环境:cygwin(所以Windows GNU sed / grep)

解决方法

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

字符串searchstr = ‘/图像/’
项replacestr =的 ‘https://example.com/Images/’
grep -rnlis –include = *.{html,aspx}“$rootDir”-e“/ images /”|同时读取文件; do sed -i“s | ${searchStr} | ${replaceStr} | I”“${File}”; DONE

它完美地工作并递归地替换rootDir中的searchStr.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读