Se você estiver usando diff, a -uopção pode ser mais legível para humanos.
Lekensteyn
@Rinzwind, ambos os arquivos contêm apenas o texto 1, mas se você quiser ver mais olhar pastebin.com/byiqdie1
Jiew Meng
Desculpa. Não acontece quando eu faço isso. Deve haver algo diferente. Não um cp 1 2(assim substituir 2) e, em seguida, você pode ser 100% b certeza de que eles são os mesmos;)
Rinzwind
2
vimdiff file1 file2? : D
dylnmc 24/11/2015
Respostas:
68
1a linha: asignifica adicionado, dexcluído e calterado. Os números de linha do arquivo original aparecem antes dessas letras e os do arquivo modificado aparecem depois da letra.
2ª linha: a linha com <é do arquivo 1 e é diferente do arquivo 2.
A terceira linha é um divisor.
4ª linha: a linha com >é do arquivo 2 e é diferente do arquivo 1.
(Se você vir =isso significa que as linhas são iguais nos dois arquivos)
E seu problema pode ser espaços em branco ou outros caracteres legíveis não humanos: eles também provocam uma diferença.
Existem algumas opções para manipular a saída.
Exemplo:
rinzwind @ discworld: ~ $ mais 1
teste
test2
test3
rinzwind @ discworld: ~ $ mais 2
teste
test2
test3
UMA "!" representa uma alteração entre as linhas que correspondem nos dois arquivos. Um "+" representa a adição de uma linha, enquanto um espaço em branco representa uma linha inalterada. No início do patch estão as informações do arquivo, incluindo o caminho completo e o registro de data e hora. No início de cada pedaço são os números de linha que se aplicam à alteração correspondente nos arquivos. Um intervalo numérico que aparece entre conjuntos de três asteriscos se aplica ao arquivo original, enquanto conjuntos de três hífens se aplicam ao novo arquivo. Os intervalos do hunk especificam os números de linha inicial e final no respectivo arquivo.
Expandindo o comentário de Lekensteyn sobre o formato unificado:
O formato começa com o mesmo cabeçalho de duas linhas que o formato de contexto, exceto que o arquivo original é precedido por "---" e o novo arquivo é precedido por "+++". A seguir, estão um ou mais blocos de alterações que contêm as diferenças de linha no arquivo. As linhas contextuais inalteradas são precedidas por um caractere de espaço, as linhas adicionais são precedidas por um sinal de mais e as linhas de exclusão são precedidas por um sinal de menos.
Algumas opções úteis:
-b Ignore as alterações na quantidade de espaço em branco.
Como verifico se existem caracteres ocultos? Existe alguma maneira de ignorar caracteres ocultos (talvez apenas excluindo novas linhas e guias?) Suponho que a maioria dos caracteres ocultos são acidentais?
precisa saber é o seguinte
Eu coloquei em algumas opções úteis (copiados de man diff;))
Rinzwind
Percebo que o uso do sinalizador -b funciona. Hmm eu não vejo diferença no espaço em branco no gedit :)
Jiew Meng
@JiewMeng Execute od -x1znos dois arquivos e compare a odsaída. Ele deve encontrar diferenças ocultas entre os arquivos.
Lgarzo 03/09
6
Acho que od (octal dump) é útil ao comparar arquivos com caracteres não imprimíveis (particularmente arquivos que diff decide serem "binários" e, portanto, informa apenas que eles diferem).
No exemplo abaixo, eu crio um par de arquivos que podem ser como os originais e, em seguida, faço uma comparação com a saída original; Em seguida, eu difiro em algumas saídas "od" diferentes.
Não tenho certeza se isso ajuda a encontrar caracteres em branco difíceis de encontrar, mas é útil para diferenciar: http://www.gnu.org/software/wdiff/
-u
opção pode ser mais legível para humanos.cp 1 2
(assim substituir 2) e, em seguida, você pode ser 100% b certeza de que eles são os mesmos;)vimdiff file1 file2
? : DRespostas:
1a linha:
a
significa adicionado,d
excluído ec
alterado. Os números de linha do arquivo original aparecem antes dessas letras e os do arquivo modificado aparecem depois da letra.2ª linha: a linha com
<
é do arquivo 1 e é diferente do arquivo 2.A terceira linha é um divisor.
4ª linha: a linha com
>
é do arquivo 2 e é diferente do arquivo 1.(Se você vir
=
isso significa que as linhas são iguais nos dois arquivos)E seu problema pode ser espaços em branco ou outros caracteres legíveis não humanos: eles também provocam uma diferença.
Existem algumas opções para manipular a saída.
Exemplo:
formato de contexto:
UMA "!" representa uma alteração entre as linhas que correspondem nos dois arquivos. Um "+" representa a adição de uma linha, enquanto um espaço em branco representa uma linha inalterada. No início do patch estão as informações do arquivo, incluindo o caminho completo e o registro de data e hora. No início de cada pedaço são os números de linha que se aplicam à alteração correspondente nos arquivos. Um intervalo numérico que aparece entre conjuntos de três asteriscos se aplica ao arquivo original, enquanto conjuntos de três hífens se aplicam ao novo arquivo. Os intervalos do hunk especificam os números de linha inicial e final no respectivo arquivo.
Expandindo o comentário de Lekensteyn sobre o formato unificado:
O formato começa com o mesmo cabeçalho de duas linhas que o formato de contexto, exceto que o arquivo original é precedido por "---" e o novo arquivo é precedido por "+++". A seguir, estão um ou mais blocos de alterações que contêm as diferenças de linha no arquivo. As linhas contextuais inalteradas são precedidas por um caractere de espaço, as linhas adicionais são precedidas por um sinal de mais e as linhas de exclusão são precedidas por um sinal de menos.
Algumas opções úteis:
-b
Ignore as alterações na quantidade de espaço em branco.-w
Ignore todo o espaço em branco.-B
Ignore todas as linhas em branco.-y
saída em 2 colunas.fonte
man diff
;))od -x1z
nos dois arquivos e compare aod
saída. Ele deve encontrar diferenças ocultas entre os arquivos.Acho que od (octal dump) é útil ao comparar arquivos com caracteres não imprimíveis (particularmente arquivos que diff decide serem "binários" e, portanto, informa apenas que eles diferem).
No exemplo abaixo, eu crio um par de arquivos que podem ser como os originais e, em seguida, faço uma comparação com a saída original; Em seguida, eu difiro em algumas saídas "od" diferentes.
$ echo 1> 1
$ echo "1"> 2
$ diff 1 2
$ od -c 1> 1.od
$ od -c 2> 2.od
$ diff 1.od 2.od
$ od -Ax -c -t x1 1> 1.od
$ od -Ax -c -t x1 2> 2.od
$ diff 1.od 2.od
fonte
Eu tive o mesmo problema e encontrei uma solução que pode ajudar, use o comando:
um deles pode estar no formato dos / windows e o outro no formato UNIX
depois que eu fiz isso o diff estava tudo bem!
fonte
Não tenho certeza se isso ajuda a encontrar caracteres em branco difíceis de encontrar, mas é útil para diferenciar: http://www.gnu.org/software/wdiff/
fonte
http://www.gnu.org/software/diffutils/manual/html_node/Detailed-Unified.html#Detailed-Unified
O link acima fornece uma descrição mais concisa e clara.
fonte