Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用awk或python合并两个已排序的文件_Python_Sorting_Awk_Merge - Fatal编程技术网

使用awk或python合并两个已排序的文件

使用awk或python合并两个已排序的文件,python,sorting,awk,merge,Python,Sorting,Awk,Merge,我有两个文件,仅取决于第1列的值 文件1: 2.3 5 3 66 5.5 2 3 54 6.2 4 1 33 文件2: 1.2 3 7 22 4.5 2 6 77 8.9 4 2 54 我想将这两个文件与最终排序的文件合并为 1.2 3 7 22 2.3 5 3 66 4.5 2 6 77 5.5 2 3 54 6.2 4 1 33 8.9 4 2 54 使用sort-m合并已排序的文件如何: sort -m -n file1 file2 > file3 你的问题很好,但我认为它被

我有两个文件,仅取决于第1列的值

文件1:

2.3 5 3 66
5.5 2 3 54
6.2 4 1 33
文件2:

1.2 3 7 22
4.5 2 6 77
8.9 4 2 54
我想将这两个文件与最终排序的文件合并为

1.2 3 7 22
2.3 5 3 66
4.5 2 6 77
5.5 2 3 54
6.2 4 1 33
8.9 4 2 54
使用sort-m合并已排序的文件如何:

sort -m -n file1 file2 > file3

你的问题很好,但我认为它被否决了,因为你没有提供足够的细节。如果我可以假设文件已按第1列排序,您希望最终输出按第1列排序,并且第1列中没有重复值,则此解决方案有效:

cat file1 \
| awk 'BEGIN{
 cmd="cat file2"; cmd | getline line2; split(line2,a," "); key2=a[1]} {
 key1=$1; while(key2<key1) {
   print line2; cmd | getline line2; split(line2,a," "); key2=a[1]};
 print $0} END{
 if(key2>key1) print line2}'

我在python中搜索合并排序文件时找到了答案。在其他页面中,这一页出现了:

为什么不简单地使用cat file1 file2 |sort@goncalopp我想我们应该假设文件已排序,询问者希望避免对合并的输出进行排序。我不知道排序是可能的!含糖的谢谢请看下面我愚蠢的awk解决方案:我应该清楚地阅读所有常见unix实用程序的手册!
import heapq
with open('file1') as fd1, open('file2') as fd2:
    for line in heapq.merge(fd1, fd2):
       print(line, end='')