awkを使ってフラットファイルをフォーマットする方法は?

awkを使ってフラットファイルをフォーマットする方法は?

単一ファイルに含まれる一部のテーブルデータの形式は次のとおりです。

;NULL;ABCD;ABHJARS;;ABCD;ABCD;Y;;;;;;;;;A;
;NULL;XEU-ANKD;XEU-AJKD;;ABCD;ABCD;Y;;;;;;;;;A;
.
.
;11744;AMKDIONSKH;AMKDJ AN DJ JAHF AS CPFVH MTM;;QWERDF;QWERDF;Y;;;;;;;;;A;

(5436rowsaffected)
(returnstatus=0)

Returnparameters:

;;
;5436;


(1rowaffected)
;;;
;-------;-----------;
;grepkey;5436;

(1rowaffected)

メモ:grepkey=5436(テーブル内のレコード数)。

予想される出力は次のとおりです。

1;NULL;ABCD;ABHJARS;;ABCD;ABCD;Y;;;;;;;;;A;
2;NULL;XEU-ANKD;XEU-AJKD;;ABCD;ABCD;Y;;;;;;;;;A;
.
.
5436;11744;AMKDIONSKH;AMKDJ AN DJ JAHF AS CPFVH MTM;;QWERDF;QWERDF;Y;;;;;;;;;A;

上記の形式のデータが必要です。行番号の前にプレフィックスを付け、テーブル内のレコード数など、ファイルの末尾にある追加データを除外したいと思います。

またを使用したいと思いますawk

ベストアンサー1

私が正しく理解したかどうかはわかりません。各行に行番号を追加し、最初の空白行以降のすべての項目を削除したいと思います。その場合は、次のようにすればよいです。

awk '{if($1){print NR$0}else{exit}}' file 

説明する

  • if($1){print NR$0}NR:現在の行番号()と行に最初のフィールドがある場合は、行を印刷します(行が空であることを確認する簡単な方法)$0
  • else{exit}: 最初の空行でスクリプトを停止します。

おすすめ記事