Não é possível descobrir o comando JOIN

0

Eu tenho dois arquivos e estou tentando me juntar a eles em um determinado ponto. Eu gostaria de me juntar a eles na quarta coluna do segundo arquivo usando a primeira coluna do primeiro. Está me deixando louca!

Aqui está o que estou tentando:

join -j4 <(sort -k1 FirstFile.txt) <(sort -k4 SecondFile.txt)

FirstFile.txt:

24.136.152.171 US
24.136.152.171 US
24.136.152.171 US 

SecondFile.txt

2014-08-03 00:00:00 User 24.136.152.171
2014-08-03 00:00:00 User 24.136.152.171
2014-08-03 00:00:00 User 24.136.152.171

Saída desejada:

2014-08-03 00:00:00 User 24.136.152.171 US
2014-08-03 00:00:00 User 24.136.152.171 US
2014-08-03 00:00:00 User 24.136.152.171 US
    
por Roboman1723 15.08.2014 / 17:00

2 respostas

2

O formato de saída padrão de join é imprimir o campo de união, os campos restantes de FILE1 e os campos restantes de FILE2 , a menos que o formato seja especificado com -o . Além disso, a opção -j4 significa que o campo de junção é o quarto campo em FILE1 e FILE2. Então você precisa dividir -j4 para -1 1 -2 4 .

Tente isto:

join -o '2.1 2.2 2.3 2.4 1.2' -2 4 -1 1 <(sort -k1 FirstFile.txt) <(sort -k4 SecondFile.txt)
    
por muru 15.08.2014 / 17:59
0

Você poderia nos python.

Salve o seguinte em um arquivo chamado join.py em sua área inicial:

ffile=open('FirstFile.txt','r').read().split('\n')       # Open the first file, read it and split it into a list at the newline character
sfile=open('SecondFile.txt','r').read().split('\n')      # Open the second file, read it and split it into a list at the newline character
minlen=min(len(ffile),len(sfile))                        # Get the lengths of both, and return the minimum so it doesn't break if they are different lengths.
ofile = [] # Create an empty list.    

for i in range (minlen):                                 # Loop for the length of the shortest list.
    ofile = ofile + [ffile[i]+sfile[i]]                  # Add the first item of the first list (the first line of the first file) to the first item of the second list (the first line of the second file).

outfile=open('outputfile','w')                           # Create an output file, called outputfile.txt in your home directory

outfile.write('\n'.join(ofile))                          # Write to the output file.

execute-o com

python join.py
    
por Tim 15.08.2014 / 18:08