【问题标题】:Modify sed command to catch substrings修改 sed 命令以捕获子字符串
【发布时间】:2018-04-30 14:01:19
【问题描述】:

我有示例文本:

"are "insulin sensitizers" "

我正在尝试使用以下命令查找 xml 引用命令并将其替换为单引号,但它仅适用于第一个,而“致敏剂”后面的第二个保持不变。

命令:

grep -rl """ ./ | xargs sed -i "s/"/'/" 

结果:

"are 'insulin sensitizers" "

想要的结果:

"are 'insulin sensitizers' "

【问题讨论】:

标签: regex bash sed grep


【解决方案1】:

您需要在sed 中使用g 标志进行全局替换:

grep -Zirl """ . | xargs -0 sed -i "s/"/'/g"

还要注意在grep 中使用-Z 选项,在xargs 中使用-0 来处理带有特殊字符和空格的文件。

根据man grep

-Z, --null

输出一个零字节(ASCII NUL 字符)而不是通常跟在文件名后面的字符。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-08
    • 2016-11-21
    • 2020-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-29
    • 2022-10-23
    相关资源
    最近更新 更多