2

我在使用 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

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

4

1 回答 1

3

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

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
于 2012-08-23T02:51:21.277 回答