我有一个SQL文件,我需要删除所有的评论
-- Sql comment line
如何使用GREP或其他工具在Linux中实现此目的?
最诚挚的问候,
答案 0 :(得分:10)
grep
工具有一个-v
选项,可以反转过滤器的意义。例如:
grep -v pax people
将为{em>不包含people
的{{1}}文件中的所有行提供。
一个例子是:
pax
除去评论标记前面只有空格的行。但是不会更改如下行:
grep -v '^ *-- ' oldfile >newfile
如果您想这样做,可以使用select blah blah -- comment here.
:
sed
编辑每行删除sed -e 's/ --.*$//' oldfile >newfile
到行尾的所有字符。
请记住,您需要小心在真正的 SQL语句中找到字符串" --"
,如(设计的):
" --"
如果你有这些,你最好不要创建/使用SQL解析器而不是简单的文本修改工具。
运作中select ' -- ' | colm from blah blah blah
的成绩单:
sed
对于pax$ echo '
...> this is a line with -- on it.
...> this is not
...> and -- this is again' | sed -e 's/ --.*$//'
this is a line with
this is not
and
:
grep
答案 1 :(得分:1)
您可以将sed命令用作sed -i '/\-\-/d' <filename>
答案 2 :(得分:0)
尝试在shell上使用sed
:
sed -e "s/(--.*)//" sql.filename