Como encontrar a intersecção de 2 linhas?

1

Eu tenho tentado fazer com que o grep trabalhe para encontrar a interseção entre duas linhas:

grep -Fx -f line1.txt line2.txt

Conteúdo do arquivo de entrada:

line1.txt:

44.5   -125.0    
44.0   -124.5    
43.0   -124.3    
42.0   -124.0

line2.txt:

43.0 -128.0    
43.1 -127.0    
43.2 -126.0    
43.3 -125.0    
43.4 -124.0    
43.5 -123.0    
43.6 -122.0    
43.7 -121.0

O problema é que as duas linhas não têm uma linha exatamente igual.

Alguém tem uma maneira simples de encontrar o ponto de intersecção?

A imagem a seguir mostra as duas linhas e o próximo ponto de interseção:

Euestavaesperandoterumcomandoparaencontraropontodeinterseçãoparamim.grepprovavelmentenãopodefazerisso?Alémdisso,tenteicomandosGMT,masnãoconseguifazerissofuncionar.Algumconselho?

Eumecontentariacomumcomandoquelocalizasseeescrevesseospontosline2.txtmaispróximosdainterseção:

    
por MattS 30.12.2017 / 00:59

2 respostas

1

O Grep é a ferramenta errada para isso! E sed não é muito melhor porque você precisa fazer alguma matemática. Perl é um candidato, mas o resultado final é que você precisa fazer testes de interseção de linha. Aqui estão alguns links para você começar. Ainda bem que o unix é uma ótima plataforma para escrever programas, porque você precisa escrever um programa.

link

link

    
por 01.01.2018 / 17:49
0

Eu posso adivinhar que você está pensando em algo assim:

( cat line2.txt; cat line1.txt | sed 's/  */ xxxx /' ) | sort -n | awk '$2 == "xxxx" {f2=$3} $2 != "xxxx" {f1 = $2} {print $1" "f1" "f2}'

saída seria:

42.0  -124.0
43.0 128.0 -124.0
43.0 128.0 -124.3
43.1 127.0 -124.3
43.2 126.0 -124.3
43.3 125.0 -124.3
43.4 124.0 -124.3
43.5 123.0 -124.3
43.6 122.0 -124.3
43.7 121.0 -124.3
44.0 121.0 -124.5
44.5 121.0 -125.0
    
por 30.12.2017 / 03:48