読み取るファイルにはfile.sql
次のテキストが含まれています
create table temp
(name varchar(20), id number)
on commit reserve rows;
create table temp1
(name varchar(20), id number)
on commit reserve rows;
select name, id
from temp where id=21;
次のように、3つの異なるファイルに3つのクエリを保存したいと思います。
ファイル1.sql
create table temp
(name varchar(20), id number)
on commit reserve rows
ファイル2.sql
create table temp1
(name varchar(20), id number)
on commit reserve rows
ファイル3.sql
select name, id
from temp where id=21
スペースを保持しながらkshスクリプトを使用する
答え1
re='create table'
csplit -s -k -f file. yourSqlFile "%^$re%" "/^$re/" '/^select name,/' '/./'
for f in file.[0][0-3]; do
k=${f#*.0}
mv "$f" "file$k.sql"
done
for i in {2,1,0};do
j=$((i + 1))
mv "file$i.sql" "file$j.sql"
done