Bash:用交替符号替换

时间:2014-12-22 07:44:59

标签: bash markdown string-substitution

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

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

编辑:

例如,我想将每个x替换为[]

Some xlinkx - > Some [link]

1 个答案:

答案 0 :(得分: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来控制表达开头和结尾的匹配,以确保第一次出现被[替换,第二次出现被]取代1}}。