キー=値ブロックをCSVに変換

キー=値ブロックをCSVに変換

あるファイルの内容を別のファイルに置き換えようとしています。

入力ファイルTest.txt:

HLRSN = 3
IMSI = 404212109727229
KIVALUE = A24AD11812232B47688ADBF15CE05CA9
K4SNO = 1
CARDTYPE = SIM
ALG = COMP128_3

HLRSN = 3
IMSI = 404212109727230
KIVALUE = A24AD11812232B47688ADBF15CE05CB8
K4SNO = 1
CARDTYPE = SIM
ALG = COMP128_3

HLRSN = 3
IMSI = 404212109727231
KIVALUE = A24AD11812232B47688ADBF15CE05CD6
K4SNO = 1
CARDTYPE = SIM
ALG = COMP128_3

他のテキストファイルから希望の出力:

3,404212109727229,A24AD11812232B47688ADBF15CE05CA9,1,SIM,COMP128_3
3,404212109727230,A24AD11812232B47688ADBF15CE05CB8,1,SIM,COMP128_3
3,404212109727231,A24AD11812232B47688ADBF15CE05CD6,1,SIM,COMP128_3

ベストアンサー1

簡単に:

awk -v RS= -v OFS=, '{print $3,$6,$9,$12,$15,$18}'

記録区切り記号RS=)できるようにする短絡モードここで、レコードは一連の空行に分かれています。レコード内にはデフォルトのフィールド区切り文字が適用されるため(レコードはスペースで区切られています)、各レコードの目的のフィールドは3番目、6番目、9番目です。

私たちは変わる出力フィールド区切り文字はカンマ文字(OFS=,)で、目的のフィールドを印刷します。

おすすめ記事