Это мой пример текстового файла:
$ 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), также принимаются.