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,...
}
...