Oracleのexpdpで読み込むパラメータファイルを作る際に、awkコマンドを使用していました。
①「select tname from tab where ~」で対象テーブル物理名をファイルに出力
②出力ファイルを加工して、パラメータファイルを出力 ※awkコマンド使用

■①のレイアウト

TABLE_1
TABLE_2
TABLE_3

■②のレイアウト

tables=(TABLE_1,TABLE_2,TABLE_3)

 

■awkのソース

awk ‘{ if (NR == 1) { printf(“tables=(%s”, $1); } else { printf(“,%s”, $1); }} END { printf(“)\n”); }’ < ${DUMP_BACKUP_DIR}/tables.txt > ${DUMP_BACKUP_DIR}/tables.par

■ソースの解読

①awkコマンドの基本

awk ‘{…}’ < [編集ファイル] or
cat [編集ファイル] | awk ‘{…}’

上記の'{…}’に編集処理を記載する。

②使用できる特殊文字
・$1,$2,,,$n,,, : スペースで区切られたn文字目
・NR : 行番号

③出力フォーマット指定
C言語のprintf関数の形式をそのまま使用できる。
・基本構文

%[フラグ][最小フィールド幅][.精度][修飾子]変換指定子

ソースの「%s」は文字列を表している。

★参考ページ

https://hydrocul.github.io/wiki/commands/awk.html

https://webkaru.net/clang/printf-format-specifiers/

 

Follow me!