2016-07-20 2 views
0

sedを使用してSQLスクリプトを編集しています。最初の "CREATE"パターンから最初の "ALTER"パターンまでのすべての行をコピーしたいと思います。私が抱えている問題は、sedは最初のオカレンスだけではなく、CREATEとALTERの各セットの間にすべての行をコピーすることです。救助へ範囲間のSedコピーパターン

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

sed -n '/CREATE/,/ALTER/{w createTables.sql /ALTER/q}' file 
を見る(改行に注意)http://stackoverflow.com/questions/38467115/how-to-count-the-contents-of - よく列記されたQの一例として、2列の他の列を使用しています。読者がコピーして貼り付けることができるサンプルデータを(必要なVS電流出力とともに)、はるかに簡単になります助けるために。がんばろう。ありがとう。 – shellter

答えて

2

SED

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

又は代替

3

たPerl:

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

これは、ALTERが一致したときに入力を閉じ、すなわち、それはそれ以上読み取ることはありません。使用

+0

ありがとう。 perlはまだ分かっていませんが、スクリプト言語を手に入れようとしているようです。 – Stelios