sh-使用sed或awk修改文件并进行十六进制2 dec转换

sh-使用sed或awk修改文件并进行十六进制2 dec转换,awk,sed,sh,Awk,Sed,Sh,这是一个输入文件: some data1 blah blah blah some data2 blah blah bllah blah Result HEX: 1ABC Name......: Some name 1 ------------------------------------------- some random data1 blah blah blah bl some random data2 blah blah bl some random data3 blah blah bl

这是一个输入文件:

some data1 blah blah blah
some data2 blah blah bllah blah
Result HEX: 1ABC
Name......: Some name 1
-------------------------------------------
some random data1 blah blah blah bl
some random data2 blah blah bl
some random data3 blah blah blah blah bla
some random data4 blah blah blah bla
Result HEX: 2BCD
Name......: Whatever name 2
-------------------------------------------
some random data1 blah blah blah blah
some random data2 blah blah blah blah blah
some random data3 blah blah blah bl
Result HEX: 3CDE
Name......: Some name 3
-------------------------------------------
我需要做到这一点:

some data1 blah blah blah
some data2 blah blah bllah blah
Result HEX: 1ABC
Result DEC: 6844
Name......: Some name 1
-------------------------------------------
some random data1 blah blah blah bl
some random data2 blah blah bl
some random data3 blah blah blah blah bla
some random data4 blah blah blah bla
Result HEX: 2BCD
Result DEC: 11213
Name......: Whatever name 2
-------------------------------------------
some random data1 blah blah blah blah
some random data2 blah blah blah blah blah
some random data3 blah blah blah bl
Result HEX: 3CDE
Result DEC: 15582
Name......: Some name 3
-------------------------------------------
所以,在文件中的每一行匹配“Result HEX:”之后,我必须添加一行“Result DEC:”,并将计算出的十六进制值添加到十进制。 我有一些小型嵌入式linux(基于busybox),因此我发现我可以使用以下命令转换hex2dec:

# printf "%d\n" 0x1ABC
6844
有人能帮忙吗?。。。它对我来说太大了:(
谢谢!

gawk
向救援人员致意

$ gawk --non-decimal-data '1; /HEX/{printf "%s DEC: %d\n", $1,"0x"$3}' file

some data1 blah blah blah
some data2 blah blah bllah blah
Result HEX: 1ABC
Result DEC: 6844
Name......: Some name 1
-------------------------------------------
some random data1 blah blah blah bl
some random data2 blah blah bl
some random data3 blah blah blah blah bla
some random data4 blah blah blah bla
Result HEX: 2BCD
Result DEC: 11213
Name......: Whatever name 2
-------------------------------------------
some random data1 blah blah blah blah
some random data2 blah blah blah blah blah
some random data3 blah blah blah bl
Result HEX: 3CDE
Result DEC: 15582
Name......: Some name 3
-------------------------------------------

您可以通过将模式替换为
$2==“HEX”
gawk
来对匹配进行微调,以进行拯救

$ gawk --non-decimal-data '1; /HEX/{printf "%s DEC: %d\n", $1,"0x"$3}' file

some data1 blah blah blah
some data2 blah blah bllah blah
Result HEX: 1ABC
Result DEC: 6844
Name......: Some name 1
-------------------------------------------
some random data1 blah blah blah bl
some random data2 blah blah bl
some random data3 blah blah blah blah bla
some random data4 blah blah blah bla
Result HEX: 2BCD
Result DEC: 11213
Name......: Whatever name 2
-------------------------------------------
some random data1 blah blah blah blah
some random data2 blah blah blah blah blah
some random data3 blah blah blah bl
Result HEX: 3CDE
Result DEC: 15582
Name......: Some name 3
-------------------------------------------

您可以通过使用
$2==“HEX”

替换模式来微调匹配!这太简单了!!非常感谢:)哦!那太容易了!!非常感谢:)