使用awk从文件中提取行

时间:2011-06-27 05:42:32

标签: regex awk

我有一个sql转储文件,我想从中提取Insert语句。我正在尝试使用awk执行此操作。

insert语句跨越多行。它们以INSERT开头,以分号结尾。

我尝试过使用:

awk '/INSERT*;/' dump.sql

但它不起作用。这样做的正确方法是什么? (我的google-fu在这个上失败了)

谢谢!

3 个答案:

答案 0 :(得分:3)

用于匹配多行:

/^INSERT/, /.*;/ {print}  

在ideone here

运行

答案 1 :(得分:1)

像这样(或@belisarius建议的)有效:

awk '{ if ($1 ~ /^\s*INSERT/) print $0 ";" }' RS=";" dump.sql

设置记录分隔符非常简单且记录良好:

http://www.gnu.org/software/gawk/manual/html_node/Multiple-Line.html

我似乎无法找到@ belisarius解决方案中双重匹配的参考,但我更喜欢它。

答案 2 :(得分:0)

我认为你错过了一个“。”如awk '/INSERT.*;/' dump.sql