使用 sed 修复 && 运算符的格式
Fix formatting of && operator with sed
我正在尝试编写一个 sed 命令,将一个 space 添加到 && (AND) 运算符的任一侧。这是我目前所拥有的:
sed -E 's+(\&\&)|(\s*\&\&\s*)+ & +g test.c
&& 周围没有 space 的第一个条件有效,所以
if(numberIn==0&&char=='g')
变成
if(numberIn==0 && char=='g')
但是第二个条件1个或多个spaces不成立。所以这个
if(numberIn==0 && char=='g')
不变。
\s*OPERATOR\s*
的模式适用于其他二元运算符,因此我不确定为什么它不适用于 and 运算符。我是否遗漏了关于在 and 运算符上使用 sed 的内容?对于第一个条件,我注意到如果将其替换为“&&”,您实际上会得到“&& &&”,这就是替代模式为“&”的原因。 (OR 或 EQUALS 运算符不是这种情况)。
如有任何提示,我们将不胜感激。
&
在 sed 替换中表示 "insert the matched string".
使用\&
插入一个文字符号:
$ echo 'foo && bar' | sed -E 's+(\&\&)|(\s*\&\&\s*)+ \&\& +g'
foo && bar
PS: 获取格式化为 clang-format 的真实代码。
我正在尝试编写一个 sed 命令,将一个 space 添加到 && (AND) 运算符的任一侧。这是我目前所拥有的:
sed -E 's+(\&\&)|(\s*\&\&\s*)+ & +g test.c
&& 周围没有 space 的第一个条件有效,所以
if(numberIn==0&&char=='g')
变成
if(numberIn==0 && char=='g')
但是第二个条件1个或多个spaces不成立。所以这个
if(numberIn==0 && char=='g')
不变。
\s*OPERATOR\s*
的模式适用于其他二元运算符,因此我不确定为什么它不适用于 and 运算符。我是否遗漏了关于在 and 运算符上使用 sed 的内容?对于第一个条件,我注意到如果将其替换为“&&”,您实际上会得到“&& &&”,这就是替代模式为“&”的原因。 (OR 或 EQUALS 运算符不是这种情况)。
如有任何提示,我们将不胜感激。
&
在 sed 替换中表示 "insert the matched string".
使用\&
插入一个文字符号:
$ echo 'foo && bar' | sed -E 's+(\&\&)|(\s*\&\&\s*)+ \&\& +g'
foo && bar
PS: 获取格式化为 clang-format 的真实代码。