小编OXX*_*XXO的帖子

将第一行复制到文件中的最后一行

这里的目的是将文件中的第一行复制到最后一行

这里是输入文件

335418.75,2392631.25,36091,38466,1
335418.75,2392643.75,36092,38466,1
335418.75,2392656.25,36093,38466,1
335418.75,2392668.75,36094,38466,1
335418.75,2392681.25,36095,38466,1
335418.75,2392693.75,36096,38466,1
335418.75,2392706.25,36097,38466,1
335418.75,2392718.75,36098,38466,1
335418.75,2392731.25,36099,38466,1
Run Code Online (Sandbox Code Playgroud)

使用以下代码,我得到了所需的输出.还有其他简单的选择吗?

  awk 'NR==1 {print}' FF1-1.csv > tmp1
  cat FF1-1.csv tmp1
Run Code Online (Sandbox Code Playgroud)

输出所需

335418.75,2392631.25,36091,38466,1
335418.75,2392643.75,36092,38466,1
335418.75,2392656.25,36093,38466,1
335418.75,2392668.75,36094,38466,1
335418.75,2392681.25,36095,38466,1
335418.75,2392693.75,36096,38466,1
335418.75,2392706.25,36097,38466,1
335418.75,2392718.75,36098,38466,1
335418.75,2392731.25,36099,38466,1
335418.75,2392631.25,36091,38466,1
Run Code Online (Sandbox Code Playgroud)

提前致谢.

linux bash awk

3
推荐指数
2
解决办法
104
查看次数

根据匹配列合并许多文件

我有很多文件(我以5为例)

如果与第一个文件不匹配,则应在输出中附加0

文件1

1001 1 2
1002 1 2
1003 3 5
1004 6 7
1005 8 9
1009 2 3
Run Code Online (Sandbox Code Playgroud)

文件2

1002 7
1003 8
Run Code Online (Sandbox Code Playgroud)

文件3

1001 5
1002 3
Run Code Online (Sandbox Code Playgroud)

文件4

1002 10
1004 60
1007  4
Run Code Online (Sandbox Code Playgroud)

文件5

1001 102
1003 305
1005 809
Run Code Online (Sandbox Code Playgroud)

期望的输出

1001 1 2 0 5  0 102
1002 1 2 7 3 10   0
1003 3 5 8 0  0 305
1004 6 7 0 0 60   0
1005 8 9 0 0  0 …
Run Code Online (Sandbox Code Playgroud)

bash awk

3
推荐指数
1
解决办法
97
查看次数

将行号添加到输出文件

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

在这里我的意见

输入文件

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  
Run Code Online (Sandbox Code Playgroud)

我的代码

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                                                       
}' …
Run Code Online (Sandbox Code Playgroud)

awk

2
推荐指数
1
解决办法
98
查看次数

在文件的最后一行添加一个点

我想在文件的最后一行(最后一个字符)中添加一个点(句号)

文件:

AAAAAA              21,28,22-23,35,24-27,29-30,37,31-34,36,54,38-45,47,46,48-53,
AAAAAA              71,55-70,72-78,80,79,81-93,96,94-95,97-98,100,99,101-103,
AAAAAA              122,104-114,118,115-117,119-121,123-124,140,125-130,148,
AAAAAA              1649-1650,1652-1667,1669-1853
Run Code Online (Sandbox Code Playgroud)

期望的输出

AAAAAA              21,28,22-23,35,24-27,29-30,37,31-34,36,54,38-45,47,46,48-53,
AAAAAA              71,55-70,72-78,80,79,81-93,96,94-95,97-98,100,99,101-103,
AAAAAA              122,104-114,118,115-117,119-121,123-124,140,125-130,148,
AAAAAA              1649-1650,1652-1667,1669-1853**.**
Run Code Online (Sandbox Code Playgroud)

我的代码:

sed '$d' file > tmp1
tail -1 file > tmp2
sed -i 's/$/./' tmp2

cat tmp1 tmp2 > output
Run Code Online (Sandbox Code Playgroud)

我用上面的代码得到了所需的输出.
有没有更有效的方法来解决这个问题?

bash awk

1
推荐指数
1
解决办法
57
查看次数

汇总列和计数行

我正在尝试对第2列中的某些数字求和,它与我的代码兼容。但是我也想计算在第2列中相同值重复多少次并在最后一栏中打印。

文件1

36  2605 1 2
36  2605 1 2
36  2603 1 2
36  2605 1 2
36  2605 1 2
36  2605 1 2
36  2606 1 2
Run Code Online (Sandbox Code Playgroud)

期望的输出

2603  36 1  2 1
2605 180 5 10 5
2606  36 1  2 1
Run Code Online (Sandbox Code Playgroud)

我试过了

awk '{a[$2]+=$1}{b[$2]+=$3}{c[$2]+=$4;count[$2]+=$2}END{for(i in a)print i,a[i],b[i],c[i],count[i]}' file1
Run Code Online (Sandbox Code Playgroud)

提前致谢

awk

0
推荐指数
2
解决办法
115
查看次数

标签 统计

awk ×5

bash ×3

linux ×1