【问题标题】:UNIX Sed Command to Replace ` with '将 ` 替换为 ' 的 UNIX Sed 命令
【发布时间】:2016-03-10 00:52:27
【问题描述】:

我的文件test.csv 包含记录`Ashish`。我想用单引号 'Ashish' 全局替换它。

我试过这个命令:

sed 's/`/'/g' test.csv 

但它不起作用。请指教。

【问题讨论】:

    标签: shell unix sed


    【解决方案1】:

    tr 是替换字符的正确工具:

    echo '`' | tr \` \'
    

    【讨论】:

      【解决方案2】:

      尝试在外部使用双引号 " 并转义反引号。

      sed "s/\`/'/g" Test.in > Test.out
      

      另外,如果要更改原始文件,则必须使用-i 标志。

      sed -i "s/\`/'/g" Test.in 
      

      【讨论】:

        【解决方案3】:

        您需要转义 '` 字符:

        sed s/\'/\`/g test.csv > out.csv
        

        【讨论】:

        • 您所做的还不止这些 - 您还删除了脚本分隔符 's,否则您无法在 '-delimited 脚本中转义 ',而是通过执行那而不是用双引号替换你现在也必须逃避反引号。
        【解决方案4】:

        失败的原因是因为无法在单引号字符串中放置单引号:https://www.gnu.org/software/bash/manual/bashref.html#Single-Quotes

        解决方法是这样的:

        • sed 's/`/'"'"'/g'
          • 将单引号字符串 ('s/`/') 与双引号字符串 ("'") 和另一个单引号字符串 ('/g') 连接,或者
        • sed 's/`/'\''/g'
          • 将单引号字符串与文字单引号和另一个单引号字符串连接起来,或者
        • 其他答案中给出的其他引用策略

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-12-29
          • 2014-03-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-09-22
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多