【问题标题】:Sub, divide and print rest of line with awk使用 awk 分割、分割和打印剩余的行
【发布时间】:2012-08-23 02:44:26
【问题描述】:

我在使用 awk 转换我的源文件时遇到了一些困难。具体来说,我想从顶行中减去每一行,将该数字除以 200,然后打印该行的其余部分。示例输入:

1000 : A0B0 add  %g1, %o1, %o2
2000 : A0B0 sub  %o1, %o2, %o2
3600 : A0B0 mov  %icc, 1, %o1
4000 : A0B0 add  %g4, %g4, %g4

输出:

0 : A0B0 add  %g1, %o1, %o2
5 : A0B0 sub  %o1, %o2, %o2
13 : A0B0 mov  %icc, 1, %o1
15 : A0B0 add  %g4, %g4, %g4

任何帮助将不胜感激。谢谢!

【问题讨论】:

    标签: awk


    【解决方案1】:

    此命令已更新以截断数字结果(根据评论请求):

    awk 'NR==1{top_line=$1} {$1=int(($1-top_line)/200); print $0}' data.txt
    

    将产生:

    0 : A0B0 add %g1, %o1, %o2
    5 : A0B0 sub %o1, %o2, %o2
    13 : A0B0 mov %icc, 1, %o1
    15 : A0B0 add %g4, %g4, %g4
    

    其中data.txt 包含:

    1000 : A0B0 add  %g1, %o1, %o2
    2000 : A0B0 sub  %o1, %o2, %o2
    3600 : A0B0 mov  %icc, 1, %o1
    4000 : A0B0 add  %g4, %g4, %g4
    

    【讨论】:

    • @TimmyThome 我更新了答案以截断结果,让它旋转,看看它是否适合你。
    猜你喜欢
    • 1970-01-01
    • 2014-02-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-01
    • 2020-10-27
    • 1970-01-01
    • 2011-08-29
    • 1970-01-01
    相关资源
    最近更新 更多