Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以使用sed命令替换:(>;\(同时\)(>(_Sed - Fatal编程技术网

是否可以使用sed命令替换:(>;\(同时\)(>(

是否可以使用sed命令替换:(>;\(同时\)(>(,sed,Sed,该问题在其标题中有描述; 使用sed命令替换以下规则的文本有何想法: (至\( \(至( 如果文本中没有,我可以执行3sed:1.(->)(2.\(->(3.)(->\( 但是,如果我们无法授权文本中没有出现哪个字符,如何存档此任务?您可以尝试的一种方法是,首先用一些不可见的字符替换\(,例如\x99,然后执行(替换,最后更改\x99) 例子: 如果您对perl没有意见,那么可以使用散列来保存映射,并在替换部分中使用匹配的部分作为键 $ echo '(1) \(2\) (3) \(4\)'

该问题在其标题中有描述; 使用
sed
命令替换以下规则的文本有何想法:

  • \(
  • \(
如果文本中没有
,我可以执行3
sed
: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\)