Ես լիովին նոր եմ AWK-ում և փորձում եմ ստորակետերով առանձնացված ֆայլից ստեղծել C ոճի զանգված: Ահա EE.hex մուտքագրված ֆայլը: Երկարությունը (վեցանկյուն թվերի թիվը, եթե այս ֆայլը կարող է տարբեր լինել).
0x01 , 0x00 , 0x05 , 0x00 , 0x08 , 0x1C , 0x00 , 0x58 ,
0x03 , 0x03 , 0x03 , 0x03 , 0x03 , 0x03 , 0x03 , 0x03 ,
0x03 , 0x03 , 0x03 , 0x03 , 0x03 , 0x03 , 0x03 , 0x03 ,
0x03 , 0x03 , 0x01 , 0x00 , 0x23 , 0x00 , 0x08 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x01 , 0x00 , 0x5B , 0x00 , 0x00 , 0x00 , 0x00 , 0x80 ,
Սա AWK սցենարն է, որի վրա ես աշխատել եմ (EE.sh):
#!/bin/bash
EEPROM_FILE="$1" # First parameter - DSP parameter file
awk '
BEGIN {
printf("const uint8_t DSP_eeprom[] =\n{\n")
array_size=0
}
{
# Format hex EEPROM array properly
if ($1 ~ "0x.")
{print " " $1 $2, $3 $4, $5 $6, $7 $8 "\n " $9 $10, $11 $12, $13 $14, $15 $16}
# Count how many bytes there is in the array were creating
for(i=1; i < NF; i++) {
if ($i ~ "0x.") {
array_size++
}
}
}
END {
printf("};\n")
{print "//I want the calculated array size "array_size" to be inserted between the [] brackets, not at the end like this!"}
}' "$EEPROM_FILE" > EE.h
Ելքային ֆայլը (EE.h) ունի հետևյալ տեսքը.
const uint8_t DSP_eeprom[] =
{
0x01, 0x00, 0x05, 0x00,
0x08, 0x1C, 0x00, 0x58,
0x03, 0x03, 0x03, 0x03,
0x03, 0x03, 0x03, 0x03,
0x03, 0x03, 0x03, 0x03,
0x03, 0x03, 0x03, 0x03,
0x03, 0x03, 0x01, 0x00,
0x23, 0x00, 0x08, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x01, 0x00, 0x5B, 0x00,
0x00, 0x00, 0x00, 0x80,
};
//I want the calculated array size 72 to be inserted between the [] brackets
Ինչպես արդեն տեսնում եք մեկնաբանությունում, ինձ անհրաժեշտ է, որ վեցանկյուն թվերը տեղադրվեն քառակուսի փակագծերի միջև, ոչ թե վերջում։ Կա՞ որևէ կերպ, որ կարող եմ
Ա) Տեղադրե՞լ թիվը քառակուսի փակագծերի միջև:
Բ) Տեղադրե՞լ նախապես ձևաչափված տող տողի վրա { նիշից առաջ:
ցանկալի արդյունքը ունի հետևյալ տեսքը` քառակուսի փակագծերի միջև տեղադրված հաշվարկված երկարությամբ.
const uint8_t DSP_eeprom[72] =
{
0x01, 0x00, 0x05, 0x00,
0x08, 0x1C, 0x00, 0x58,
0x03, 0x03, 0x03, 0x03,
0x03, 0x03, 0x03, 0x03,
0x03, 0x03, 0x03, 0x03,
0x03, 0x03, 0x03, 0x03,
0x03, 0x03, 0x01, 0x00,
0x23, 0x00, 0x08, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x01, 0x00, 0x5B, 0x00,
0x00, 0x00, 0x00, 0x80,
};
Շնորհակալություն