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 に答える