如何将文件中符合特定格式的十进制数批量转换为十六进制
分号分隔十进制数批量转两位大写十六进制方案
方案1:awk 通用实现(兼容每行任意数量字段)
直接通过awk指定分号为输入输出分隔符,遍历每个字段做格式转换即可,命令如下:
awk 'BEGIN{FS=OFS=";"} {for(i=1;i<=NF;i++) $i=sprintf("%02X", $i)} 1' 目标文件名
参数说明:
BEGIN{FS=OFS=";"}:预先设置输入字段分隔符(FS)和输出字段分隔符(OFS)都为分号for(i=1;i<=NF;i++) $i=sprintf("%02X", $i):遍历当前行的每个字段,将十进制值格式化为两位大写十六进制,不足两位自动补前导0- 末尾的
1是awk的简写语法,代表处理完成后输出整行内容
方案2:bash 循环+printf 实现(适合固定每行3个字段的场景)
如果你的文件格式固定每行都是3个分号分隔的数值,也可以直接用bash循环搭配你熟悉的printf命令实现:
while IFS=';' read -r n1 n2 n3; do printf '%02X;%02X;%02X\n' "$n1" "$n2" "$n3" done < 目标文件名
两种方案执行后都会直接输出符合预期的转换结果,如果需要保存到新文件,在命令末尾加> 新文件名即可。
内容的提问来源于stack exchange,提问作者M-Rick
相关产品推荐
相关产品推荐

