使用sed或awk将十进制数据字段转换为十六进制

使用sed或awk将十进制数据字段转换为十六进制,awk,sed,sh,Awk,Sed,Sh,谁可以更正此命令以获得所需的输出: 输入:“1 | 2 | 30 | 4” 预期产出: 1|2|001E|4 致以最良好的祝愿 $ echo "1|2|30|4" | awk -F'|' -v OFS='|' '{print $1, $2, sprintf("%X", $3), $4}' 1|2|1E|4 输出: 1|2|001E|4 1 | 2 | 001E | 4 echo“1 | 2 | 30 | 4”| awk-F'|'-v OFS='|''{x=sprintf(“%04X”

谁可以更正此命令以获得所需的输出:

输入:“1 | 2 | 30 | 4”

预期产出:

1|2|001E|4
致以最良好的祝愿

$ echo "1|2|30|4" |
    awk -F'|' -v OFS='|' '{print $1, $2, sprintf("%X", $3), $4}'
1|2|1E|4
输出:

1|2|001E|4 1 | 2 | 001E | 4
echo“1 | 2 | 30 | 4”| awk-F'|'-v OFS='|''{x=sprintf(“%04X”,$3);打印$1,$2,x,$4}它工作+1。你可以用:
“{print$1,$2,sprintf(“%04X”,$3),$4}”做得更短。
你启发了我。这是我正在寻找的最终版本:echo“1 | 2 | 30 | 4”| awk-F'|'-vofs='|'''''''{$3=sprintf(“%04X”,$3);print$0}'
echo "1|2|30|4" | awk -F"|" '{printf "%s|%s|%04X|%s", $1, $2, $3, $4}'
1|2|001E|4