Nyd*_*enn 3 command-line text-processing
awk我想使用命令将文件 1(100 万行)和文件 2(10,000 行)加入到新文件 3(应该是 100 万行)中
文件1:
471808241 29164840 1 10001 156197396
471722917 21067410 1 31001 135961856
471941441 20774160 1 7001 180995072
471568655 29042630 1 15001 157502996
471524711 20716360 1 4001 180226817
471873918 29583520 1 2001 128567298
471568650 29042631 1 15002 157502910
Run Code Online (Sandbox Code Playgroud)
文件2
610146 156197396
531101 135961856
704011 180226817
502216 128567298
707012 180995072
615246 157502996
685221 157502910
Run Code Online (Sandbox Code Playgroud)
期望的输出:
471808241 29164840 1 10001 156197396 610146
471722917 21067410 1 31001 135961856 531101
471941441 20774160 1 7001 180995072 707012
471568655 29042630 1 15001 157502996 615246
471524711 20716360 1 4001 180226817 704011
471873918 29583520 1 2001 128567298 502216
471568650 29042631 1 15002 157502910 685221
Run Code Online (Sandbox Code Playgroud)
如果您不介意对可以使用的文件进行排序join(尽管这可能不适合您的情况,但看看如何完成它很有趣)
首先File 2对常用数字字段进行排序
sort -k2 "File 2" > file2clean
Run Code Online (Sandbox Code Playgroud)
然后就可以将这join两个文件
sort -k5 "File 1" | join -a 1 -o 1.1 1.2 1.3 1.4 0 2.1 -1 5 -2 2 - file2clean | tee "File 3"
Run Code Online (Sandbox Code Playgroud)
-a 1File 1打印无法配对的行(因为该文件有更多行,我认为这就是您想要的)-o 1.1 1.2 1.3 1.4 0 2.1输出行的字段顺序 - 我们加入的字段是0,1.1是第一个文件的第一个字段,依此类推-1 5 -2 2连接第一个文件的第 5 个字段和第二个文件的第 2 个字段- file2clean这里-表示沿着管道传递的标准输入,即排序版本File 1完成后您可以删除中间的file2clean.
| 归档时间: |
|
| 查看次数: |
1967 次 |
| 最近记录: |