我使用sed编辑一些sql脚本。我想复制第一个" CREATE"中的所有行。模式直到第一个" ALTER"图案。我遇到的问题是sed复制每组CREATE和ALTER之间的所有行,而不是仅复制第一次出现(多次)。
sed -n -e '/CREATE/,/ALTER/w createTables.sql' $filename
答案 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