sed - 如何查找和替换所有百分比、加号和管道符号?

标签 sed

我有一个包含许多百分比、加号和管道符号的文档。我想用代码替换它们,以便在 TeX 中使用。

  • %变成 \textpercent .
  • +变成 \textplus .
  • |变成 \textbar .

  • 这是我正在使用的代码,但它不起作用:

    sed -i "s/\%/\\\textpercent /g" ./file.txt
    sed -i "s/|/\\\textbar /g" ./file.txt
    sed -i "s/\+/\\\textplus /g" ./file.txt
    

    如何用此代码替换这些符号?

    最佳答案

    测试脚本:

    #!/bin/bash
    
    cat << 'EOF' > testfile.txt
    1+2+3=6
    12 is 50% of 24
    The pipe character '|' looks like a vertical line.
    EOF
    
    sed -i -r 's/%/\\textpercent /g;s/[+]/\\textplus /g;s/[|]/\\textbar /g' testfile.txt
    
    cat testfile.txt
    

    输出:
    1\textplus 2\textplus 3=6
    12 is 50\textpercent  of 24
    The pipe character '\textbar ' looks like a vertical line.
    

    @tripleee 已经以类似的方式提出了这一建议,我认为没有理由不这样做。如您所见,我的平台使用与您的相同版本的 GNU sed。与@tripleee 版本的唯一区别是我使用了扩展正则表达式模式,因此我必须对管道和加号进行转义,或者将其放入带有 [] 的字符类中。 .

    关于sed - 如何查找和替换所有百分比、加号和管道符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11987221/

    相关文章:

    linux - 如何从匹配字符串打印文件直到 EOF

    linux - 在 Linux 中合并来自同一文件的列

    string - 根据另一个文件的信息从一个文件中提取行和子字符串

    shell - 如何使用 sed 仅打印第一条非空白行

    bash - bash 脚本中的 Sed/Awk

    vim - 在关键字后添加常量

    regex - 如何删除文件开头的以 "//"开头的行(例如文件头)?

    bash - 正则表达式和/或 sed 替换小写字母

    macos - 在 OS X 上使用 sed 进行就地编辑

    linux - 如何使用sed或awk处理指定列的内容?