Compare as cabeças de dois arquivos no bash

8

Eu posso fazer diff filea fileb para ver a diferença entre os arquivos. Eu também posso fazer head -1 filea para ver a primeira linha de filea ou fileb. Como posso combinar esses comandos para mostrar a diferença entre a primeira linha do filea e a primeira linha do arquivo?

    
por Martijn Burger 23.04.2015 / 14:28

3 respostas

20

Se o seu shell suportar substituição de processos , tente:

diff <(head -n 1 filea) <(head -n 1 fileb)
    
por 23.04.2015 / 14:31
6

Se você estiver apenas comparando a primeira linha de cada arquivo, talvez se preocupe com alterações no nível da palavra na linha, usando dwdiff :

dwdiff <(head -n 1 filea) <(head -n 1 fileb)

dwdiff tem algumas opções interessantes, como -c para colorir as palavras alteradas.

Ou usando sed em vez de head:

dwdiff <(sed 1q filea) <(sed 1q fileb)

que o manual para cabeçalho sugere ser mais portátil que a cabeça, como a sintaxe da cabeça mudou ao longo do tempo head -1 vs head -n 1

Além disso, você pode apenas observar as alterações, com um pouco menos de digitação:

head -n1 -q filea fileb

que exibe as duas linhas, uma abaixo da outra, para fácil comparação visual.

    
por 23.04.2015 / 16:59
0

Você pode usar:

if [ "'head -1 file1'" == "'head -1 file2'" ]; then echo "the same"; fi
    
por 23.04.2015 / 14:32