【问题标题】:sh - modify file using sed or awk and doing hex 2 dec conversionsh - 使用 sed 或 awk 修改文件并进行 hex 2 dec 转换
【发布时间】:2016-11-07 16:55:59
【问题描述】:

这是一个输入文件:

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

有人可以帮忙吗?...这对我来说太大了:( 谢谢!

【问题讨论】:

    标签: awk sed sh


    【解决方案1】:

    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" 来微调匹配

    【讨论】:

    • 哦!那太容易了!非常感谢:)
    猜你喜欢
    • 2015-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-26
    • 1970-01-01
    相关资源
    最近更新 更多