我有一个文本文件,其中包含许多十进制的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
我想将每一行转换为十六进制格式(所需的输出):
00,00,00
00,03,15
00,07,30
00,08,45
我知道我可以使用printf "%.2x,%.2x,%.2x\n" 000 010 69但printf "%.2x,%.2x,%.2x\n" 000 010 069不起作用,因为069不可转换.
我认为awk这将是一个合理的工具,但我想我会面临转换小数的相同问题,如069等.
perl -le '$hex = sprintf("%.2x,%.2x,%.2x",005,69,255); print $hex' 与069也有同样的问题
它在awk中工作正常:
$ echo 000,062,102 | awk '{printf( "%x,%x,%x\n", $1,$2,$3)}' FS=,
0,3e,66
您只是缺少参数之间的逗号:
echo "000,010,069" | awk -F ',' '{ printf "%02X,%02X,%02X\n", $1, $2, $3 }'
产生:
00,0A,45
在 Mac OS X (BSD awk) 和 Linux (GNU awk) 上均已验证。