我想使用sed
命令删除a-zA-Z0-9
中的多行注释。如果我们使用诸如\w\S
之类的字符范围,则正则表达式是有效的,但是对于诸如hello world
/* abcd
efgh*/
world hello
之类的文字字符,则不能使用正则表达式。
测试文件内容:
sed -i -e "s/\/\*[\s\S]\*\///" <file>
使用的命令:
hello world
world hello
预期结果:
hello world
abcd
efgh*/
world hello
实际结果:
{{1}}
答案 0 :(得分:1)
答案 1 :(得分:1)
使用sed可以实现,但并不容易。
sed ':x ; /^\/\*/ { N ; s/.*\*\/// ; /^$/d ; bx }' file
:x
是标签/^\/\*/
是/ * N
将输入的行追加到模式空间s/.*\*\///
替换任何{...} * / /^$/d
删除空行bx
无条件跳转到:x 在文档中找到更多信息