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/