0

我正在尝试编写一个 sed 命令,在 && (AND) 运算符的任一侧添加一个空格。这是我到目前为止所拥有的:

sed -E 's+(\&\&)|(\s*\&\&\s*)+ & +g test.c

&& 周围没有空格的第一个条件有效,所以

if(numberIn==0&&char=='g')

变成

if(numberIn==0 && char=='g')

但是 1 个或多个空格的第二个条件不起作用。所以这

if(numberIn==0  &&   char=='g')

没有改变。

与其他二元运算符一起使用的模式,\s*OPERATOR\s*所以我不确定为什么它不适用于 and 运算符。我是否遗漏了有关在 and 运算符上使用 sed 的内容?对于第一个条件,我注意到如果你用“ && ”替换它,你实际上会得到“ && &&”,所以这就是替换模式是“ & ”的原因。(OR 或 EQUALS 运算符不是这种情况)。

任何提示将不胜感激。

4

1 回答 1

1

&在 sed 替换中意味着“插入匹配的字符串”。

用于\&插入文字 & 符号:

$ echo 'foo   && bar' | sed -E 's+(\&\&)|(\s*\&\&\s*)+ \&\& +g'
foo && bar

PS:获取像 clang-format 格式的真实代码。

于 2020-04-01T02:29:56.153 回答