Compare as cabeças de dois arquivos no bash


11

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

Respostas:


22

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

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

Eu já tinha visto o comando da subestação de processo em algum lugar, mas não sabia o que fazia. Obrigado !
Edi9999

6

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

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

dwdifftem algumas opções legais, como -ccolorir as palavras alteradas.

Ou, usando em sedvez de cabeça:

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

que o manual do head sugere é mais portátil que o head, pois a sintaxe do head mudou com o tempo head -1versushead -n 1

Além disso, você pode apenas observar as mudanças, 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.


0

Você pode usar:

if [ "`head -1 file1`" == "`head -1 file2`" ]; then echo "the same"; fi

2
Observe que ele responderia "o mesmo" se o arquivo1 for um arquivo vazio (ou não legível) e a primeira linha do arquivo2 estiver vazia.
Stéphane Chazelas

Eu não disse que este método é 'à prova de idiotas', mas se você quer rapidamente para coincidir com a primeira linha de dois arquivos ...
Lambert
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.