sed または awk を使用してパターンの前の行を置き換えます。

sed または awk を使用してパターンの前の行を置き換えます。

ファイルには次の入力がありますsacro.sql

{ TABLE "informix".sacro_log row size = 64 number of columns = 3 index size = 0 }

{ unload file name = sacro00518.unl number of rows = 0 }

create table "informix".sacro_log
(
log_id serial not null constraint "informix".nnc_sac_log00,
log_type integer,
log_data text
);

revoke all on "informix".sacro_log from "public" as "informix";

"Create table "informix".sacro_log" 上記の2行目をテストに置き換えたいと思います。

私が望む出力の例:

{ TABLE "informix".sacro_log row size = 64 number of columns = 3 index size = 0 }

test

create table "informix".sacro_log
(
log_id serial not null constraint "informix".nnc_sac_log00,
log_type integer,
log_data text
);

revoke all on "informix".sacro_log from "public" as "informix";

ベストアンサー1

sed '/create table "informix"/i\
test
' data.in >data.out

これにより、次の内容を含むコンテンツが作成されますdata.out

{ TABLE "informix".sacro_log row size = 64 number of columns = 3 index size = 0 }

{ unload file name = sacro00518.unl number of rows = 0 }

test
create table "informix".sacro_log
(
log_id serial not null constraint "informix".nnc_sac_log00,
log_type integer,
log_data text
);

i(「挿入」)コマンドは、sed一致するパターンの前に指定されたテキストを挿入します。挿入されたテキストはリテラル改行を尊重する必要があります(GNUsedでも許可されていますsed '/pattern/i text')。

おすすめ記事