テキストファイルを読み、その内容を別のファイルまたは変数に保存します。

テキストファイルを読み、その内容を別のファイルまたは変数に保存します。

読み取るファイルには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

関連情報