1

我的数据如下所示:

0.000000 0.071429 0.071429 0.857143 
0.071429 0.428571 0.071429 0.428571 
0.357143 0.214286 0.357143 0.071429 
0.000000 0.714286 0.000000 0.285714 
0.000000 0.571429 0.000000 0.428571 
0.428571 0.357143 0.071429 0.142857 
0.000000 0.071429 0.071429 0.857143 
0.071429 0.000000 0.928571 0.000000 
0.000000 0.071429 0.000000 0.928571 
0.000000 0.285714 0.000000 0.714286 
0.142857 0.000000 0.785714 0.071429 

我希望它看起来像这样:

AC name_of_the_file.txt
00 0.000000 0.071429 0.071429 0.857143 
01 0.071429 0.428571 0.071429 0.428571 
02 0.357143 0.214286 0.357143 0.071429 
03 0.000000 0.714286 0.000000 0.285714 
04 0.000000 0.571429 0.000000 0.428571 
05 0.428571 0.357143 0.071429 0.142857 
06 0.000000 0.071429 0.071429 0.857143 
07 0.071429 0.000000 0.928571 0.000000 
08 0.000000 0.071429 0.000000 0.928571 
09 0.000000 0.285714 0.000000 0.714286 
10 0.142857 0.000000 0.785714 0.071429  
XX
//

我怎样才能 awk $1 的范围(从 00 到文件结束)?

4

2 回答 2

2

单程:

awk 'FNR == 1 { print FILENAME } { printf "%02d %s\n", FNR - 1, $0 }' infile

输出:

infile
00 00 0.000000 0.071429 0.071429 0.857143 
01 01 0.071429 0.428571 0.071429 0.428571 
02 02 0.357143 0.214286 0.357143 0.071429 
03 03 0.000000 0.714286 0.000000 0.285714 
04 04 0.000000 0.571429 0.000000 0.428571 
05 05 0.428571 0.357143 0.071429 0.142857 
06 06 0.000000 0.071429 0.071429 0.857143 
07 07 0.071429 0.000000 0.928571 0.000000 
08 08 0.000000 0.071429 0.000000 0.928571 
09 09 0.000000 0.285714 0.000000 0.714286 
10 10 0.142857 0.000000 0.785714 0.071429
于 2012-04-24T21:03:15.723 回答
2

我不清楚真正的问题是什么。从表面上看,这应该可以完成工作:

awk '{ if (line++ == 0) { print "AC " FILENAME; } printf("%.2d %s\n", NR-1, $0); }
     END { print "XX\n//" }'
于 2012-04-24T21:03:33.740 回答