我想使用sedoneliner在字符串周围放置一对括号。
这是我尝试过的
echo 1 | sed -e 's/.*/(\0)/'
Run Code Online (Sandbox Code Playgroud)
我希望这封信1将与.*模式匹配。
然而,输出只是
(0)
Run Code Online (Sandbox Code Playgroud)
我实际上想得到这个结果:
(1)
Run Code Online (Sandbox Code Playgroud)
我sed在 OSX 上使用 BSD
&是替换整个模式匹配的标准方法。一些sed实现,如 GNU 或 busybox 支持\0作为替代,但这不是标准的,也不是可移植的。
$ echo 1 | sed -e 's/.*/(&)/'
(1)
Run Code Online (Sandbox Code Playgroud)
该命令将第一个(可能是空的)字符序列括在括号内的每一行中,尽可能多。对于那些包含未形成有效字符的字节的行,这可能不会包含完整行,在这种情况下,您可能会发现:
sed 's/^/(/; s/$/)/'
Run Code Online (Sandbox Code Playgroud)
更可靠地将整行括在括号内。