awk将字符串中的十进制数转换为4位十六进制数



我有这样的文件:

STH STH STH STH
232
STH STH STH STH
2342
2342

等等。

更具体地说。它包含以下行:4个单词,全部大写或数字,用空格或'n'分隔。

我只想将包含数字的行更改为十六进制数。我试过用awk写剧本,但我放弃了。

解决方案,有人吗?

$ awk '$0+0==$0{ $0=sprintf("%x",$0) } 1' file
STH STH STH STH
e8
STH STH STH STH
926
926

或者正如@Cyrus在下面的评论中建议的那样:

$ awk '($0+0==$0){ $0=sprintf("%0.4x",$0) } 1' file
STH STH STH STH
00e8
STH STH STH STH
0926
0926

如果这不是你想要的,那么编辑你的问题以澄清你的需求,并提供与你发布的样本输入相匹配的预期输出。

最新更新