Sed复制模式之间的范围只有一次

时间:2016-07-20 12:21:10

标签: regex bash sed

我使用sed编辑一些sql脚本。我想复制第一个" CREATE"中的所有行。模式直到第一个" ALTER"图案。我遇到的问题是sed复制每组CREATE和ALTER之间的所有行,而不是仅复制第一次出现(多次)。

sed -n -e '/CREATE/,/ALTER/w createTables.sql' $filename

2 个答案:

答案 0 :(得分:3)

Perl救援:

perl -ne 'print if /CREATE/ .. /ALTER/ && close ARGV' -- "$filename" > createTables.sql

当ALTER匹配时它关闭输入,即它不再读取。

答案 1 :(得分:2)

使用sed

 sed -n '/CREATE/,/ALTER/{p;/ALTER/q}' file > createTables.sql

或者(注意换行符)

sed -n '/CREATE/,/ALTER/{w createTables.sql
/ALTER/q}' file