2017-02-14 7 views
0

Aファイルに 'INSERT'文を含むinsert.sqlファイルを作成するだけです。 AWKで文字列ブロックを処理する方法を教えてもらえますか? INPUTファイル@awkでパターンを開始する文字列ブロックを取得する方法

UPDATE TEST_TABLE SET CO1 = '11111', COL2 = '234234234' 
WHERE COL3 < SYSDATE; 

UPDATE TEST_TABLE SET CO1 = '11111', COL2 = '234234234' 
WHERE COL3 < SYSDATE; 

INSERT INTO TEST_TABLE(COL1,COL2,COL3) 
VALUES('ASKDFJ','ASKDJFL',SYSDATE); 

UPDATE TEST_TABLE SET CO1 = '11111', COL2 = '234234234' 
WHERE COL3 < SYSDATE; 

INSERT INTO TEST_TABLE(COL1,COL2,COL3) 
VALUES('ASKDFJ','ASKDJFL',SYSDATE-2); 

OUTPUT

INSERT INTO TEST_TABLE(COL1,COL2,COL3) 
VALUES('ASKDFJ','ASKDJFL',SYSDATE); 

INSERT INTO TEST_TABLE(COL1,COL2,COL3) 
VALUES('ASKDFJ','ASKDJFL',SYSDATE-2); 
+1

あなたは 'UPDATE'ステートメントを削除しますか? *文字列ブロック*はどうですか? –

答えて

3

印刷で始まるレコードを出力します。

$ awk '/INSERT/,/^$/' file 
INSERT INTO TEST_TABLE(COL1,COL2,COL3) 
VALUES('ASKDFJ','ASKDJFL',SYSDATE); 

INSERT INTO TEST_TABLE(COL1,COL2,COL3) 
VALUES('ASKDFJ','ASKDJFL',SYSDATE-2); 

INSERTを選択して、空行はお好みに合わせて正規表現。

+0

'^ 1' Nice one ... –

+0

非常にシンプルだけどかなり便利だけど! – Sigularity

1

@このスクリプトを使用することができます。

awk -v RS='\n\n' '$0 ~ "^INSERT"' file 

レコードセパレータRSは2つの改行に設定されています。

$0 ~ "^INSERT"INSERTと空行の間でどのようなキーワードINSERT

+0

空の文字列にRSを設定するほうが良いでしょう。 –

+0

はい、空の文字列でRSを設定する方が良いです。どうもありがとうございます! – Sigularity

1
awk -v ORS="\n" -v RS= '/^INSERT/{print $0}' inputfile 
+0

できます。 – Sigularity

関連する問題