使用awk或python合并两个已排序的文件
我有两个文件,仅取决于第1列的值 文件1:使用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 你的问题很好,但我认为它被
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='')