Como grep as linhas com a mesma coluna em arquivos diferentes e imprimir coluna específica e adicionar para o arquivo original? [fechadas]

0

Aqui estão os arquivos de texto que temos:

arquivo1.txt

A B C D
4 9
5 8

arquivo2.txt:

H I J K L M N O P Q R
1 2 3 5 8 9 5 3 3 2 4
4 7 8 9 5 6 8 9 0 8 7
7 8 0 7 4 7 7 9 0 6 7
2 7 9 5 7 9 0 7 6 5 4

Eu quero extrair as duas colunas (H e N) do arquivo2.txt quando Uma coluna no arquivo1.txt coincide com a coluna L no arquivo2.txt, e o arquivo de texto de saída a ser mostrado deve ser assim:

output.txt

A B C D
4 9 7 7
5 8 4 8

Como posso fazer isso?

    
por Owen 11.09.2018 / 05:59

2 respostas

0

Não é possível usar o grep, mas é possível usar o awk:

$ awk 'NR==1   {print $0;next}              # Print header
       NR==FNR {a[$1]=$2;next}              # collect data from file1.txt
               { if($5 in a)                # If column L match
                 { print($5,a[$5],$1,$7) }  # print columns (H and N)
               }
      ' file1.txt file2.txt

Como um verso:

$ awk 'NR==1{print $0;next} NR==FNR{a[$1]=$2;next} {if($5 in a){print($5,a[$5],$1,$7)}}' file1.txt file2.txt

A B C D
5 8 4 8
4 9 7 7

A ordem é quando os campos aparecem no file2.txt .
Se você precisar classificá-lo, adicione uma etapa de classificação.

    
por 11.09.2018 / 12:47
0

Eu iria com uma abordagem passo a passo, para explicar

  1. Classifique o arquivo 1

    sort file1.txt > file1.sorted.txt

  2. Pegue a parte interessante do arquivo2 (e classifique também)

    awk '{print $5,$1,$7}' file2.txt | sort > file2_of_interest.txt

  3. Junte as duas saídas com base na chave, que é a coluna 1 nos dois arquivos

    join file1.sorted.txt file2_of_interest.txt -1 1 -2 1

Você pode combinar as três etapas usando a indireção - mas no final você precisaria concluir a análise de pelo menos um arquivo. Também haveria preocupações nos casos em que a coluna L no arquivo2.txt não é exclusiva e / ou a coluna 1 no arquivo1.txt não é exclusiva - você precisaria resolvê-las inserindo sua lógica de negócios para tornar a chave exclusiva.

    
por 11.09.2018 / 08:02