是否可以使用sed命令替换:(>;\(同时\)(>(
该问题在其标题中有描述; 使用是否可以使用sed命令替换:(>;\(同时\)(>(,sed,Sed,该问题在其标题中有描述; 使用sed命令替换以下规则的文本有何想法: (至\( \(至( 如果文本中没有,我可以执行3sed:1.(->)(2.\(->(3.)(->\( 但是,如果我们无法授权文本中没有出现哪个字符,如何存档此任务?您可以尝试的一种方法是,首先用一些不可见的字符替换\(,例如\x99,然后执行(替换,最后更改\x99) 例子: 如果您对perl没有意见,那么可以使用散列来保存映射,并在替换部分中使用匹配的部分作为键 $ echo '(1) \(2\) (3) \(4\)'
sed
命令替换以下规则的文本有何想法:
至(
\(
至\(
(
,我可以执行3sed
:1.(
->)(
2.\(
->(
3.)(
->\(
但是,如果我们无法授权文本中没有出现哪个字符,如何存档此任务?您可以尝试的一种方法是,首先用一些不可见的字符替换
\(
,例如\x99
,然后执行(
替换,最后更改\x99
)
例子:
如果您对
perl
没有意见,那么可以使用散列来保存映射,并在替换部分中使用匹配的部分作为键
$ echo '(1) \(2\) (3) \(4\)' |
perl -pe 'BEGIN{ $h{"("}="\\("; $h{"\\("}="(" } s/\(|\\\(/$h{$&}/g'
\(1) (2\) \(3) (4\)
您肯定知道的一个字符不会出现(除非您自己修改了行并将其放在那里!)是换行符。因此,
\x0a
始终是最佳的不可见字符选择。在GNU sed中,您可以使用\n
。
$ echo '(1) \(2\) (3) \(4\)' |
perl -pe 'BEGIN{ $h{"("}="\\("; $h{"\\("}="(" } s/\(|\\\(/$h{$&}/g'
\(1) (2\) \(3) (4\)