Това е моят примерен текстов файл:
$ cat RealVNC\ MRU.reg
"10"="Lamborghini-:1"
"16"="Terminus-"
"20"="Midnighter-:5915"
"35"="ThreepWood-:1"
"81"="Midnighter-:1"
"58"="Midnighter-"
И бих искал да преобразувам стойностите на първото поле (числата между ""
) от десетичен в шестнадесетичен (това е .reg файл за Windows, така че го измислих, мислейки, че числата са в десетична основа и сега файлът е твърде дълъг за ръчно редактиране).
Примерен резултат, който трябва да получа:
$ cat Hex\ RealVNC\ MRU.reg
"0A"="Lamborghini-:1"
"10"="Terminus-"
"14"="Midnighter-:5915"
"23"="ThreepWood-:1"
"51"="Midnighter-:1"
"3A"="Midnighter-"
Както се вижда сменени са само номерата. Резултатните числа трябва да са дълги два знака (RegEdit ги счита за различни).
Промените в реда на редовете не се притесняват тук, но мисля, че би било по-„чисто“ решение, което не го променя.
Не очаквам нито едно число (било то десетично или шестнадесетично) да има повече от 2 знака, но решение, което отчита тази възможност, ще бъде най-доброто (тъй като е по-общо решение).
Тествах досега:
$ cat RealVNC\ MRU.reg | awk -F \" '{print $2}'
10
16
20
35
81
58
Но не знам кой да направи промените от dec към hex.
Моята обвивка обикновено е Bash, но се приемат и други решения, извлечени от обвивка (като Perl или Python).