Sed 从sql文件中删除unix注释
有了sql文件(包),我想用UNIX(Sed 从sql文件中删除unix注释,sed,Sed,有了sql文件(包),我想用UNIX(sed)从文件中删除所有注释(/*text*/)。 这就是我尝试过的: sed的/[:blank:*-~.[\n]*.-$/'file.txt 换行符似乎不是这样工作的。有什么建议吗? 应将其从管路3至8中拆下。第15行 SQL文件: CREATE OR REPLACE PACKAGE BODY MYSCHEMA.MYPACKAGE AS /***********************************************************
sed
)从文件中删除所有注释(/*text*/
)。
这就是我尝试过的:
sed的/[:blank:*-~.[\n]*.-$/'file.txt
换行符似乎不是这样工作的。有什么建议吗?
应将其从管路3至8中拆下。第15行
SQL文件:
CREATE OR REPLACE PACKAGE BODY MYSCHEMA.MYPACKAGE
AS
/***************************************************************************
Author : myname
Date 10/2019
Overview : This is the main control procedure
Major Modifications (initial, when, ver, irfs, description):
***************************************************************************/
PROCEDURE MYPROCEDURE (p_error IN OUT NUMBER,
p_return_code IN OUT NUMBER,
p_error_message IN OUT VARCHAR2)
AS
v_infomsgid NUMBER;
BEGIN
/*This is my comment about this process*/
MY_SQL_CODE_HERE;
END;
END MYPACKAGE;
所需的输出如下:
CREATE OR REPLACE PACKAGE BODY MYSCHEMA.MYPACKAGE
AS
PROCEDURE MYPROCEDURE (p_error IN OUT NUMBER,
p_return_code IN OUT NUMBER,
p_error_message IN OUT VARCHAR2)
AS
v_infomsgid NUMBER;
BEGIN
MY_SQL_CODE_HERE;
END;
END MYPACKAGE;
谢谢 您可以查看@KamilCuk在专用工具评论中提供的链接,或使用
GNU-sed
:
sed -z 's#\*/#\r#g;s#/\*[^\r]*\r\n*##g' file.txt
说明:首先将
*/
替换为唯一字符(我将使用\r
,因为您应该已经删除了Windows行结尾)。接下来,您可以删除注释。使用选项
-z
用于匹配持续超过1行的注释,并在注释结束后删除换行符。请将该示例输入的所需输出(无说明)添加到您的问题(无注释)中。使用sed
几乎不可能,因为regex是贪婪的,并且没有lookarounds。像/*comment*/code/*comment*/
这样的行会很难。这能回答你的问题吗?如果您想删除/text/
,那么您的示例中的内容就是一个问题:2019年10月
@Cyrus我编辑了这个问题,OP没有在/*text*/
周围使用反引号。