Предполагается:
- Частота появления таких ключевых слов, как
FHEAD
, TPDTL
и т. Д., Неодинакова. При необходимости используйте самый последний. - Количество строк должно быть равно количеству
TLITM
. - Таблица должна обновляться при появлении
TPDSC
.
тогда, пожалуйста, попробуйте следующее:
awk 'BEGIN {FS = "|"; OFS = ","}
$1 ~ /FHEAD/ {a = $5}
$1 ~ /TPDTL/ {b = $3; c = $4; d = $10; e = $11}
$1 ~ /TLITM/ {f[++tlitm_count] = $3}
$1 ~ /TPDSC/ {g = $6;
for (i=1; i<=tlitm_count; i++) {
print a, b, c, d, e, f[i], g
}
tlitm_count = 0;
}
' *.dat
Вывод:
1037,72810,1995019,20200216000001,20200222235959,101055590,-20
1037,10728,1995021,20200216000001,20200222235959,210000041,-30
1037,10728,1995021,20200216000001,20200222235959,101004522,-30
1037,10728,1995021,20200216000001,20200222235959,101047933,-25
1037,10728,1995021,20200216000001,20200222235959,101004681,-25
1037,10728,1995021,20200216000001,20200222235959,101028161,-25
Если вы хотите, чтобы выходным разделителем был пробел, измените значение OFS
.