Linux/awk将包含十进制的文件转换为十六进制

moa*_*eep 3 linux perl awk

我有一个文本文件,其中包含许多十进制的RGB颜色代码.例如

000,000,000
000,003,025
000,007,048
000,010,069
000,014,089
000,017,108
000,020,125
000,024,140
000,027,155
Run Code Online (Sandbox Code Playgroud)

我想将每一行转换为十六进制格式(所需的输出):

00,00,00
00,03,15
00,07,30
00,08,45
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用printf "%.2x,%.2x,%.2x\n" 000 010 69printf "%.2x,%.2x,%.2x\n" 000 010 069不起作用,因为069不可转换.

我认为awk这将是一个合理的工具,但我想我会面临转换小数的相同问题,如069等.

perl -le '$hex = sprintf("%.2x,%.2x,%.2x",005,69,255); print $hex' 与069也有同样的问题

Wil*_*ell 6

它在awk中工作正常:

$ echo 000,062,102 | awk '{printf( "%x,%x,%x\n", $1,$2,$3)}' FS=,
0,3e,66
Run Code Online (Sandbox Code Playgroud)


Dar*_*ust 5

您只是缺少参数之间的逗号:

echo "000,010,069" | awk -F ',' '{ printf "%02X,%02X,%02X\n", $1, $2, $3 }'
Run Code Online (Sandbox Code Playgroud)

产生:

00,0A,45
Run Code Online (Sandbox Code Playgroud)

在 Mac OS X (BSD awk) 和 Linux (GNU awk) 上均已验证。