Awk 将行号添加到输出文件

Awk 将行号添加到输出文件,awk,Awk,如何修改我的代码添加将行号获取到输出的选项 39589 39461 3 2835 2.97 2.97 39591 39461 3 2835 3.90 3.89 39591 40071 3 2835 3.38 9.00

如何修改我的代码添加将行号获取到输出的选项

39589 39461      3       2835       2.97           2.97                     
39591 39461      3       2835       3.90           3.89                     
39591 40071      3       2835       3.38           9.00                     
39595 39953      3       2835       3.91           3.91                     
39601 39593      3       2836       3.50          17.00                     
39603 38669      3       2836       3.43           3.43                     
39603 39233      3       2836       4.03           8.00  
awk 'BEGIN{                                                                 
    DASHES = sprintf ("%0*d",57, _)                                     
        gsub (/0/, "-", DASHES)                                             
    print DASHES                                                        
    printf("%8s%12s%9s%14s%14s \n","ID/ID","XCode","ID","Code-OK(m)","Co
    print DASHES                                                        
}                                                                           
{                                                                           
     diff=sqrt(($5-$6)^2)                                                   
     if(diff > 3.8)  printf("%5s %5s %6d %10d %10.2f %14.2f\n",$1,$2,$3,$4,$
}                                                                           
END{                                                                        
     print DASHES                                                       
}' file                                                                     
---------------------------------------------------------                   
   ID/ID       XCode       ID    Code-OK(m)   Code-Bad(m)                   
---------------------------------------------------------                   
39591 40071      3       2835       3.38           9.00                     
39601 39593      3       2836       3.50          17.00                     
39603 39233      3       2836       4.03           8.00                     
---------------------------------------------------------                   
  ---------------------------------------------------------             
     ID/ID       XCode       ID    Code-OK(m)   Code-Bad(m)             
  ---------------------------------------------------------             
1 39591 40071      3       2835       3.38           9.00               
2 39601 39593      3       2836       3.50          17.00               
3 39603 39233      3       2836       4.03           8.00               
  ---------------------------------------------------------             
...                                                                     
($5-$6)^2 > 3.8^2  {                                                 
      printf("%d %5s %5s %6d %10d %10.2f %14.2f\n",++count,$1,$2,$3,...
}  
...
这是我的意见

39589 39461      3       2835       2.97           2.97                     
39591 39461      3       2835       3.90           3.89                     
39591 40071      3       2835       3.38           9.00                     
39595 39953      3       2835       3.91           3.91                     
39601 39593      3       2836       3.50          17.00                     
39603 38669      3       2836       3.43           3.43                     
39603 39233      3       2836       4.03           8.00  
awk 'BEGIN{                                                                 
    DASHES = sprintf ("%0*d",57, _)                                     
        gsub (/0/, "-", DASHES)                                             
    print DASHES                                                        
    printf("%8s%12s%9s%14s%14s \n","ID/ID","XCode","ID","Code-OK(m)","Co
    print DASHES                                                        
}                                                                           
{                                                                           
     diff=sqrt(($5-$6)^2)                                                   
     if(diff > 3.8)  printf("%5s %5s %6d %10d %10.2f %14.2f\n",$1,$2,$3,$4,$
}                                                                           
END{                                                                        
     print DASHES                                                       
}' file                                                                     
---------------------------------------------------------                   
   ID/ID       XCode       ID    Code-OK(m)   Code-Bad(m)                   
---------------------------------------------------------                   
39591 40071      3       2835       3.38           9.00                     
39601 39593      3       2836       3.50          17.00                     
39603 39233      3       2836       4.03           8.00                     
---------------------------------------------------------                   
  ---------------------------------------------------------             
     ID/ID       XCode       ID    Code-OK(m)   Code-Bad(m)             
  ---------------------------------------------------------             
1 39591 40071      3       2835       3.38           9.00               
2 39601 39593      3       2836       3.50          17.00               
3 39603 39233      3       2836       4.03           8.00               
  ---------------------------------------------------------             
...                                                                     
($5-$6)^2 > 3.8^2  {                                                 
      printf("%d %5s %5s %6d %10d %10.2f %14.2f\n",++count,$1,$2,$3,...
}  
...
输入文件

39589 39461      3       2835       2.97           2.97                     
39591 39461      3       2835       3.90           3.89                     
39591 40071      3       2835       3.38           9.00                     
39595 39953      3       2835       3.91           3.91                     
39601 39593      3       2836       3.50          17.00                     
39603 38669      3       2836       3.43           3.43                     
39603 39233      3       2836       4.03           8.00  
awk 'BEGIN{                                                                 
    DASHES = sprintf ("%0*d",57, _)                                     
        gsub (/0/, "-", DASHES)                                             
    print DASHES                                                        
    printf("%8s%12s%9s%14s%14s \n","ID/ID","XCode","ID","Code-OK(m)","Co
    print DASHES                                                        
}                                                                           
{                                                                           
     diff=sqrt(($5-$6)^2)                                                   
     if(diff > 3.8)  printf("%5s %5s %6d %10d %10.2f %14.2f\n",$1,$2,$3,$4,$
}                                                                           
END{                                                                        
     print DASHES                                                       
}' file                                                                     
---------------------------------------------------------                   
   ID/ID       XCode       ID    Code-OK(m)   Code-Bad(m)                   
---------------------------------------------------------                   
39591 40071      3       2835       3.38           9.00                     
39601 39593      3       2836       3.50          17.00                     
39603 39233      3       2836       4.03           8.00                     
---------------------------------------------------------                   
  ---------------------------------------------------------             
     ID/ID       XCode       ID    Code-OK(m)   Code-Bad(m)             
  ---------------------------------------------------------             
1 39591 40071      3       2835       3.38           9.00               
2 39601 39593      3       2836       3.50          17.00               
3 39603 39233      3       2836       4.03           8.00               
  ---------------------------------------------------------             
...                                                                     
($5-$6)^2 > 3.8^2  {                                                 
      printf("%d %5s %5s %6d %10d %10.2f %14.2f\n",++count,$1,$2,$3,...
}  
...
我的代码

39589 39461      3       2835       2.97           2.97                     
39591 39461      3       2835       3.90           3.89                     
39591 40071      3       2835       3.38           9.00                     
39595 39953      3       2835       3.91           3.91                     
39601 39593      3       2836       3.50          17.00                     
39603 38669      3       2836       3.43           3.43                     
39603 39233      3       2836       4.03           8.00  
awk 'BEGIN{                                                                 
    DASHES = sprintf ("%0*d",57, _)                                     
        gsub (/0/, "-", DASHES)                                             
    print DASHES                                                        
    printf("%8s%12s%9s%14s%14s \n","ID/ID","XCode","ID","Code-OK(m)","Co
    print DASHES                                                        
}                                                                           
{                                                                           
     diff=sqrt(($5-$6)^2)                                                   
     if(diff > 3.8)  printf("%5s %5s %6d %10d %10.2f %14.2f\n",$1,$2,$3,$4,$
}                                                                           
END{                                                                        
     print DASHES                                                       
}' file                                                                     
---------------------------------------------------------                   
   ID/ID       XCode       ID    Code-OK(m)   Code-Bad(m)                   
---------------------------------------------------------                   
39591 40071      3       2835       3.38           9.00                     
39601 39593      3       2836       3.50          17.00                     
39603 39233      3       2836       4.03           8.00                     
---------------------------------------------------------                   
  ---------------------------------------------------------             
     ID/ID       XCode       ID    Code-OK(m)   Code-Bad(m)             
  ---------------------------------------------------------             
1 39591 40071      3       2835       3.38           9.00               
2 39601 39593      3       2836       3.50          17.00               
3 39603 39233      3       2836       4.03           8.00               
  ---------------------------------------------------------             
...                                                                     
($5-$6)^2 > 3.8^2  {                                                 
      printf("%d %5s %5s %6d %10d %10.2f %14.2f\n",++count,$1,$2,$3,...
}  
...
我的输出

39589 39461      3       2835       2.97           2.97                     
39591 39461      3       2835       3.90           3.89                     
39591 40071      3       2835       3.38           9.00                     
39595 39953      3       2835       3.91           3.91                     
39601 39593      3       2836       3.50          17.00                     
39603 38669      3       2836       3.43           3.43                     
39603 39233      3       2836       4.03           8.00  
awk 'BEGIN{                                                                 
    DASHES = sprintf ("%0*d",57, _)                                     
        gsub (/0/, "-", DASHES)                                             
    print DASHES                                                        
    printf("%8s%12s%9s%14s%14s \n","ID/ID","XCode","ID","Code-OK(m)","Co
    print DASHES                                                        
}                                                                           
{                                                                           
     diff=sqrt(($5-$6)^2)                                                   
     if(diff > 3.8)  printf("%5s %5s %6d %10d %10.2f %14.2f\n",$1,$2,$3,$4,$
}                                                                           
END{                                                                        
     print DASHES                                                       
}' file                                                                     
---------------------------------------------------------                   
   ID/ID       XCode       ID    Code-OK(m)   Code-Bad(m)                   
---------------------------------------------------------                   
39591 40071      3       2835       3.38           9.00                     
39601 39593      3       2836       3.50          17.00                     
39603 39233      3       2836       4.03           8.00                     
---------------------------------------------------------                   
  ---------------------------------------------------------             
     ID/ID       XCode       ID    Code-OK(m)   Code-Bad(m)             
  ---------------------------------------------------------             
1 39591 40071      3       2835       3.38           9.00               
2 39601 39593      3       2836       3.50          17.00               
3 39603 39233      3       2836       4.03           8.00               
  ---------------------------------------------------------             
...                                                                     
($5-$6)^2 > 3.8^2  {                                                 
      printf("%d %5s %5s %6d %10d %10.2f %14.2f\n",++count,$1,$2,$3,...
}  
...
所需输出

39589 39461      3       2835       2.97           2.97                     
39591 39461      3       2835       3.90           3.89                     
39591 40071      3       2835       3.38           9.00                     
39595 39953      3       2835       3.91           3.91                     
39601 39593      3       2836       3.50          17.00                     
39603 38669      3       2836       3.43           3.43                     
39603 39233      3       2836       4.03           8.00  
awk 'BEGIN{                                                                 
    DASHES = sprintf ("%0*d",57, _)                                     
        gsub (/0/, "-", DASHES)                                             
    print DASHES                                                        
    printf("%8s%12s%9s%14s%14s \n","ID/ID","XCode","ID","Code-OK(m)","Co
    print DASHES                                                        
}                                                                           
{                                                                           
     diff=sqrt(($5-$6)^2)                                                   
     if(diff > 3.8)  printf("%5s %5s %6d %10d %10.2f %14.2f\n",$1,$2,$3,$4,$
}                                                                           
END{                                                                        
     print DASHES                                                       
}' file                                                                     
---------------------------------------------------------                   
   ID/ID       XCode       ID    Code-OK(m)   Code-Bad(m)                   
---------------------------------------------------------                   
39591 40071      3       2835       3.38           9.00                     
39601 39593      3       2836       3.50          17.00                     
39603 39233      3       2836       4.03           8.00                     
---------------------------------------------------------                   
  ---------------------------------------------------------             
     ID/ID       XCode       ID    Code-OK(m)   Code-Bad(m)             
  ---------------------------------------------------------             
1 39591 40071      3       2835       3.38           9.00               
2 39601 39593      3       2836       3.50          17.00               
3 39603 39233      3       2836       4.03           8.00               
  ---------------------------------------------------------             
...                                                                     
($5-$6)^2 > 3.8^2  {                                                 
      printf("%d %5s %5s %6d %10d %10.2f %14.2f\n",++count,$1,$2,$3,...
}  
...
行数可以达到4个,这就是为什么我保留行数5个空格的原因

39589 39461      3       2835       2.97           2.97                     
39591 39461      3       2835       3.90           3.89                     
39591 40071      3       2835       3.38           9.00                     
39595 39953      3       2835       3.91           3.91                     
39601 39593      3       2836       3.50          17.00                     
39603 38669      3       2836       3.43           3.43                     
39603 39233      3       2836       4.03           8.00  
awk 'BEGIN{                                                                 
    DASHES = sprintf ("%0*d",57, _)                                     
        gsub (/0/, "-", DASHES)                                             
    print DASHES                                                        
    printf("%8s%12s%9s%14s%14s \n","ID/ID","XCode","ID","Code-OK(m)","Co
    print DASHES                                                        
}                                                                           
{                                                                           
     diff=sqrt(($5-$6)^2)                                                   
     if(diff > 3.8)  printf("%5s %5s %6d %10d %10.2f %14.2f\n",$1,$2,$3,$4,$
}                                                                           
END{                                                                        
     print DASHES                                                       
}' file                                                                     
---------------------------------------------------------                   
   ID/ID       XCode       ID    Code-OK(m)   Code-Bad(m)                   
---------------------------------------------------------                   
39591 40071      3       2835       3.38           9.00                     
39601 39593      3       2836       3.50          17.00                     
39603 39233      3       2836       4.03           8.00                     
---------------------------------------------------------                   
  ---------------------------------------------------------             
     ID/ID       XCode       ID    Code-OK(m)   Code-Bad(m)             
  ---------------------------------------------------------             
1 39591 40071      3       2835       3.38           9.00               
2 39601 39593      3       2836       3.50          17.00               
3 39603 39233      3       2836       4.03           8.00               
  ---------------------------------------------------------             
...                                                                     
($5-$6)^2 > 3.8^2  {                                                 
      printf("%d %5s %5s %6d %10d %10.2f %14.2f\n",++count,$1,$2,$3,...
}  
...
提前谢谢

39589 39461      3       2835       2.97           2.97                     
39591 39461      3       2835       3.90           3.89                     
39591 40071      3       2835       3.38           9.00                     
39595 39953      3       2835       3.91           3.91                     
39601 39593      3       2836       3.50          17.00                     
39603 38669      3       2836       3.43           3.43                     
39603 39233      3       2836       4.03           8.00  
awk 'BEGIN{                                                                 
    DASHES = sprintf ("%0*d",57, _)                                     
        gsub (/0/, "-", DASHES)                                             
    print DASHES                                                        
    printf("%8s%12s%9s%14s%14s \n","ID/ID","XCode","ID","Code-OK(m)","Co
    print DASHES                                                        
}                                                                           
{                                                                           
     diff=sqrt(($5-$6)^2)                                                   
     if(diff > 3.8)  printf("%5s %5s %6d %10d %10.2f %14.2f\n",$1,$2,$3,$4,$
}                                                                           
END{                                                                        
     print DASHES                                                       
}' file                                                                     
---------------------------------------------------------                   
   ID/ID       XCode       ID    Code-OK(m)   Code-Bad(m)                   
---------------------------------------------------------                   
39591 40071      3       2835       3.38           9.00                     
39601 39593      3       2836       3.50          17.00                     
39603 39233      3       2836       4.03           8.00                     
---------------------------------------------------------                   
  ---------------------------------------------------------             
     ID/ID       XCode       ID    Code-OK(m)   Code-Bad(m)             
  ---------------------------------------------------------             
1 39591 40071      3       2835       3.38           9.00               
2 39601 39593      3       2836       3.50          17.00               
3 39603 39233      3       2836       4.03           8.00               
  ---------------------------------------------------------             
...                                                                     
($5-$6)^2 > 3.8^2  {                                                 
      printf("%d %5s %5s %6d %10d %10.2f %14.2f\n",++count,$1,$2,$3,...
}  
...

您可以通过比较平方值来消除平方根,也可以将条件移出语句块。

为了澄清:这是指输入的行号(您所需的输出应显示3、5和7作为行号)还是输出的行号(您所需的输出准确)?t计算。不,我不想打印NR值。我想要1,2,3,因为它们是找到的3条记录。karakfa,我使用条件sqrt(($5-$6)^2)来获取所有的整数值。那么,如果我使用($5-$6)^2,情况就不同了。比较结果是一样的。这是消除sqrt计算的常见技巧。你试图以一种昂贵的方式模拟绝对值。对于琐碎的案例来说并不重要,但有一个建议,因为这个网站是为了推广知识……Karakfa,请欣赏关于消除sqrt计算的常见技巧的信息。很多
39589 39461      3       2835       2.97           2.97                     
39591 39461      3       2835       3.90           3.89                     
39591 40071      3       2835       3.38           9.00                     
39595 39953      3       2835       3.91           3.91                     
39601 39593      3       2836       3.50          17.00                     
39603 38669      3       2836       3.43           3.43                     
39603 39233      3       2836       4.03           8.00  
awk 'BEGIN{                                                                 
    DASHES = sprintf ("%0*d",57, _)                                     
        gsub (/0/, "-", DASHES)                                             
    print DASHES                                                        
    printf("%8s%12s%9s%14s%14s \n","ID/ID","XCode","ID","Code-OK(m)","Co
    print DASHES                                                        
}                                                                           
{                                                                           
     diff=sqrt(($5-$6)^2)                                                   
     if(diff > 3.8)  printf("%5s %5s %6d %10d %10.2f %14.2f\n",$1,$2,$3,$4,$
}                                                                           
END{                                                                        
     print DASHES                                                       
}' file                                                                     
---------------------------------------------------------                   
   ID/ID       XCode       ID    Code-OK(m)   Code-Bad(m)                   
---------------------------------------------------------                   
39591 40071      3       2835       3.38           9.00                     
39601 39593      3       2836       3.50          17.00                     
39603 39233      3       2836       4.03           8.00                     
---------------------------------------------------------                   
  ---------------------------------------------------------             
     ID/ID       XCode       ID    Code-OK(m)   Code-Bad(m)             
  ---------------------------------------------------------             
1 39591 40071      3       2835       3.38           9.00               
2 39601 39593      3       2836       3.50          17.00               
3 39603 39233      3       2836       4.03           8.00               
  ---------------------------------------------------------             
...                                                                     
($5-$6)^2 > 3.8^2  {                                                 
      printf("%d %5s %5s %6d %10d %10.2f %14.2f\n",++count,$1,$2,$3,...
}  
...