Com comparar dos fitxers a Linux

How Compare Two Files Linux



Si voleu comparar dos fitxers i desxifrar la diferència, es diu una ordre dif s'utilitza. Aquesta guia està enfocada a proporcionar-vos l'ús del fitxer dif amb diverses opcions per obtenir la diferència entre dos fitxers.

Llavors, com funciona el dif l'ordre funciona realment? El dif L'ordre compara els dos fitxers i genera una llista de diferències entre tots dos fitxers. Més precisament, proporciona una llista de modificacions que cal fer al primer fitxer perquè coincideixi amb el segon fitxer. El dif els programadors també utilitzen l'ordre per obtenir la diferència entre dos fitxers de codi font per desenvolupar pegats.







Abans d’explorar els exemples, tingueu en compte que l’ordre dels fitxers és molt important. Perquè el dif L'ordre dóna sortida en funció de l'ordre dels fitxers.



Com s'utilitza l'ordre diff a Linux per comparar fitxers:

La sintaxi del fitxer dif a continuació s’esmenta l’ordre:



$dif [opcions] [fitxer1] [fitxer2]

En primer lloc, creeu dos fitxers. Estic creant fitxers de text amb el nom de fitxer_test_1.txt i fitxer_test_2.txt . Aquests fitxers contenen contingut amb una lleugera diferència:





Ara utilitzeu l'ordre següent per obtenir la diferència:



$diffitxer_test_1.txt fitxer_test_2.txt

La sortida estàndard mostra les línies que coincideixen segons l'ordre dels fitxers esmentats a l'ordre. Així, anem a descodificar la sortida:

La comparació dels fitxers està etiquetada i cada etiqueta té un número a banda i banda. El format és el següent:

[Número de línia del fitxer 1] [Etiqueta (a, c, d)] [Número de línia del fitxer 2]

Hi ha tres etiquetes:

  • a - Afegeix: afegiu contingut al primer fitxer per sincronitzar-lo amb el segon fitxer.
  • c - Canvi: indica que cal fer una modificació al contingut del primer fitxer perquè coincideixi amb el segon fitxer.
  • d - Suprimeix: elimineu el contingut del primer fitxer perquè coincideixi amb el segon.

2d1 indica que se suprimeix la línia número 2 del primer fitxer perquè coincideixi amb el segon fitxer de la línia número 1.

De la mateixa manera, 4c3 significa fer un canvi a la quarta línia del primer fitxer perquè coincideixi amb la línia número 3 del segon fitxer, ja que ambdues línies són lleugerament diferents.

Hi ha un altre mètode per veure la diferència, utilitzeu el fitxer dif ordre amb el fitxer -i opció:

$dif -i -EN 60fitxer_test_1.txt fitxer_test_2.txt

A la sortida anterior, el contingut de fitxer_test_1.txt es mostra a la part esquerra, mentre que el contingut de fitxer_text_2.txt es mostra a la part dreta. La diferència s’indica amb els símbols:

  • | - La línia és diferent al segon fitxer
  • > - La línia és addicional al segon fitxer
  • <— Line has been deleted from the second file

La -W indica l'amplada entre el contingut de dos fitxers. Per obtenir la separació i veure la diferència, utilitzeu el següent:

$dif -i -EN 60 --suppress-common-linesfitxer_test_1.txt fitxer_test_2.txt

Com obtenir la sortida en una línia mitjançant l'ordre diff:

Si us costa descodificar el mètode etiquetat, hi ha un enfocament més senzill. Utilitzant el -q opció amb el fitxer dif La comanda us proporciona una sortida en una línia. Bé, però, sense cap informació addicional, però:

$dif -qfitxer_test_1.txt fitxer_test_2.txt

Si els fitxers difereixen, l'ordre anterior donarà una sortida. Si els fitxers són idèntics, no hi haurà sortida. Per demostrar-ho, estic creant una còpia de fitxer_test_1.txt utilitzant:

$cpfitxer_test_1.txt fitxer_test_3.txt

Es crearà un fitxer nou amb el nom de fitxer_test_3.txt que conté el mateix contingut que fitxer_test_1.txt té. Ara, utilitzeu:

$dif -qfitxer_test_1.txt fitxer_test_2.txt

Com que tots dos fitxers tenen contingut similar, per tant, no hi hauria sortida.

Com es pot comprovar la diferència dels fitxers en mode context mitjançant l'ordre diff:

Per obtenir la comparació en mode context, el fitxer -c s'utilitzarà l'opció amb dif comandament:

$dif -cfitxer_test_1.txt fitxer_test_2.txt

Disseccionem la sortida.

Per mantenir la diferència, el primer fitxer s'indica amb *** juntament amb la data i hora de la creació, mentre que el segon fitxer s'indica amb -.

La següent línia significa un rang de línies considerades durant la comparació. Per al primer fitxer, és així *** 1,6 **** i per al segon fitxer, ho és -1,5-- :

La diferència s’indica amb els símbols:

  • +: La línia no apareix al primer fitxer. Inseriu-lo al primer fitxer o traieu-lo del segon fitxer perquè coincideixi amb els dos fitxers.
  • -: La línia existeix al primer fitxer però no al segon fitxer. Intenteu inserir-lo al segon fitxer o suprimir-lo del primer per coincidir amb els dos fitxers.
  • ! : La línia necessita modificacions per tal de coincidir.

Com es pot comprovar la diferència dels fitxers en mode unificat mitjançant l'ordre diff:

El mode unificat és bastant similar al mode context però sense informació redundant. La bandera que fem servir és -u :

$dif -ufitxer_test_1.txt fitxer_test_2.txt

A la sortida, el primer fitxer s’indica amb - i el segon amb +++. La segona línia mostra el nombre de línies considerades per a la comparació en ambdós fitxers i, a continuació, el contingut que cal eliminar, afegir o modificar amb els símbols que contenen. No hi haurà cap símbol amb línies similars als dos fitxers.

Com ignorar la sensibilitat entre majúscules i minúscules mentre s'utilitza l'ordre diff:

Si voleu comparar els fitxers ignorant la distinció entre majúscules i minúscules, feu servir el fitxer -i bandera:

$dif -ifitxer_test_1.txt fitxer_test_2.txt

Per a la demostració, he fet el D de Deepin al primer fitxer petit:

Com es veu a la primera ordre, s’indica la diferència; mentre s’utilitza -i aquesta diferència s'ha eliminat.

Algunes altres opcions útils del dif es mostren a continuació:

Opció Descripció
-a Aquesta opció tracta tots els fitxers com a fitxers de text
-B Ignora la modificació quan les línies estan en blanc
-I Aquesta opció ignora l'expansió de les pestanyes
-Jo Ignora els canvis en què coincideixen totes les línies
-s Ofereix sortida quan dos fitxers són idèntics
-en Ignora tot l'espai en blanc
-AIX. Ignora l'espai en blanc a l'extrem de la línia

Com utilitzar Vim Editor per comparar dos fitxers:

Un altre mètode per comparar dos fitxers és utilitzar el fitxer vimdiff comandament. Per a això, heu de tenir instal·lat vim:

$suoapteinstal·lar vaig venir

Ara, per comparar dos fitxers, utilitzeu:

$vimdiff fitxer_provat_1.txt fitxer_provat_2.txt

Tots dos fitxers s’obriran un al costat de l’altre. La part que no coincideix es ressaltarà:

Com comparar dos fitxers amb colordiff:

Un altre enfocament és una mena d 'extensió del fitxer dif comandament. Podeu fer la comparació més identificable afegint-hi colors. Per instal·lar utilitzeu:

$suoapteinstal·larcolordiff

Per comparar fitxers, utilitzeu:

$colordiff test_file_1.txt test_file_2.txt

Podeu substituir dif amb colordiff per obtenir la sortida estàndard del fitxer dif ordre en format de colors.

Conclusió:

Per comparar fitxers a Linux i fins i tot a macOS, una utilitat que s’utilitza s’anomena diff. La utilitat diff compara dos fitxers i proporciona informació sobre les diferències entre els dos fitxers. Els desenvolupadors utilitzen principalment l'ordre diff per crear fitxers de pegats.

En aquesta guia, hem discutit a fons el dif i com utilitzar-lo per comparar dos fitxers amb opcions diferents. També vam aprendre a utilitzar-lo colordiff per fer més reconeixibles les diferències de fitxers. Però si us resulta difícil d’utilitzar la utilitat basada en terminals, també hi ha algunes eines basades en GUI, com Kompare, DiffMerge, Meld - Diff Tool i Diffuse - GUI Giff Tool.