regex - 修改 sed 命令以捕获子字符串
问题描述
我有示例文本:
"are "insulin sensitizers" "
我正在尝试使用以下命令查找并用单引号替换 xml 引用命令,但它仅适用于第一个,而“致敏剂”之后的第二个保持不变。
命令:
grep -rl """ ./ | xargs sed -i "s/"/'/"
结果:
"are 'insulin sensitizers" "
期望的结果:
"are 'insulin sensitizers' "
解决方案
您将需要使用g
flag insed
进行全局替换:
grep -Zirl """ . | xargs -0 sed -i "s/"/'/g"
还要注意使用-Z
选项 ingrep
和-0
inxargs
来处理带有特殊字符和空格的文件。
根据man grep
:
-Z
,--null
输出一个零字节(ASCII NUL 字符)而不是通常跟在文件名后面的字符。
推荐阅读
- python - 为什么不能在类变量中显示图像?python tkinter 画布
- java - 在 Java 中的方法中将集合的集合合并到集合中
- android - 从一个片段移动到另一个片段时,片段 UI 不可见
- ios - 如何从 Swift3 iOS 中的对象数组中找到唯一值
- django - Django - 通过更改另一个模型来更新一个模型中的整数字段值
- c# - 将迭代中的当前元素与数组中的所有以下元素进行比较 - for 循环
- javascript - 如何根据带有多项选择的下拉菜单切换输入字段
- php - PHP 启动:无法为 PHP 文件夹加载动态库
- python - 如何循环遍历 2 个数组?
- python - 是否有实现列名的通用方法?