我有以下字符串:'$'nwnwnwnnn
并想要将其更改为:{ bitset<9>(0bnwnwnwnnn), '$'},
我已经使用它们的方法研究了许多针对不同shell的类似问题,但没有任何效果。我通常在zsh中,但是我可以使用bash或其他shell。
我一直在尝试的一般形式是:
sed -E -i new s/(\'.\')([nw]+)/{ bitset<9>(0b\2), \1},/g thing.txt
它应适用于$
以外的任何字符以及n
或w
的任何序列。
我通常对我需要在这里逃脱感到困惑。该站点上的一些答案表示,在替换的第一部分中,它逃避了括号。
我误用了-i
吗?
答案 0 :(得分:1)
如果您使用基本的正则表达式,则需要转义括号以创建捕获组,如果您使用扩展的正则表达式,则不要转义括号。 GNU -E
的{{1}}选项和标准sed
的{{1}}选项启用了扩展的正则表达式,因此您无需转义它们。
如果您只想匹配-r
而不是允许引号中的任何字符,则需要转义的sed
。
您需要将整个$
命令放在引号中,因为它必须是$
命令的单个参数。
使用s///
时,通常将sed
放在后缀之前。另外,后缀放在原始文件的已保存副本上,而不是您通过更改创建的新文件上,因此-i
是一个后缀。
.