awk:注释SQL语句



我有一个巨大的文件,里面有这样的行

INSERT INTO mytable (),()...

我想用只替换那些以INSERT INTO mytable开头的线路

/* INSERT INTO mytable (),()... */

我知道有很多可能性,包括好的vim搜索替换宏,但我想在命令行中完成。

这是awk版本:

 awk '{ gsub("^(INSERT.*)","/* & */"); print $0 }'

这是假设INSERT是行中的第一个字符。如果可以有前导空格,请使用以下内容:

awk '{ gsub("^([[:space:]]*INSERT.*)","/* & */"); print $0 }'

这也应该适用于非GNU awk。我在Linux和AIX上进行了测试。

试试这个sed的一行:

sed 's#^INSERT INTO mytable.*#/* & */#' file
sed -e "s/^INSERT INTO mytable.*//* & *//" file.txt

另一种sed可能性

最新更新