【问题标题】:Bash: replace with alternating symbolBash:替换为交替符号
【发布时间】:2014-12-22 07:44:59
【问题描述】:

我想从某种文本(ulysses iii iCloud Text.txt 文件)中提取降价。编辑器用“对象替换字符”0xEF 0xBF 0xBC (efbfbc) 替换了所有方括号,我想撤消此操作。

如何用“[”替换所有奇数,用“]”替换所有其他奇数。

编辑:

例如,我想将每次出现的x 替换为[]

Some xlinkx -> Some [link]

【问题讨论】:

  • 输入是什么,你期望的输出是什么不清楚。
  • 为什么不尝试修复源数据?

标签: bash markdown string-substitution


【解决方案1】:

您可以将sed 用于您的目的。使用sed -i,它将就地编辑文件,进行所需的更改。要在file.bak 中创建原始备份,请使用sed -i.bak。该表达式要求您将要替换的字符放在变量 char 中(例如,在您的示例中为 char=x)。然后以下内容将所有出现的x..stuff..x 替换为[..stuff..]

sed -i "s/\(^.*\)\b$char\([^$char]*\)$char\b\(.*$\)/\1[\2]\3/g" filename

示例:

$ char=x; echo "Some xlinkx" | sed -e "s/\(^.*\)\b$char\([^$char]*\)$char\b\(.*$\)/\1[\2]\3/g"
Some [link]

表达式利用单词边界 \b 来控制表达式开头和结尾的匹配,以确保将第一次出现替换为[,第二次替换为]

【讨论】:

    猜你喜欢
    • 2013-06-27
    • 2014-09-07
    • 2011-11-07
    • 2022-12-22
    • 2018-10-03
    • 1970-01-01
    • 1970-01-01
    • 2013-08-31
    • 1970-01-01
    相关资源
    最近更新 更多