用awk划分,划分和打印其余部分

时间:2012-08-23 02:44:27

标签: awk

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

非常感谢任何帮助。谢谢!

1 个答案:

答案 0 :(得分: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