2016-05-12 3 views
-4

Ich möchte zwei Dateien vergleichen und den Unterschied zwischen den beiden Dateien auf den dritten umleiten.
file1:Shell-Skript, um zwei Dateien zu vergleichen und den Unterschied zu der dritten Datei zu schreiben

/opt/a/a.sql 
    /opt/b/b.sql 
    /opt/c/c.sql 

Falls eine Datei hat # vor /opt/c/c.sql, es #

file2 überspringen sollte:

/opt/c/c.sql 
/opt/a/a.sql 

Ich möchte den Unterschied zwischen den beiden Dateien erhalten. In diesem Fall sollte /opt/b/b.sql in einer anderen Datei gespeichert werden. Kann mir jemand helfen, die oben genannten Szenarien zu erreichen?

+6

[ 'Mann diff'] (http : //man7.org/linux/man-pages/man1/diff.1.html) –

+2

Zuerst sollten Sie entscheiden, welche der drei Sie verwenden möchten: Batch-, Powershell- oder Shell-Skript – Marged

+1

Zweitens sollten Sie recherchieren, welche Befehl (s) Sie würden für Ihre Skriptsprache wählen. – krousemw

Antwort

1

file1

$ cat file1 #both file1 and file2 may contain spaces which are ignored 

/opt/a/a.sql 
/opt/b/b.sql 

/opt/c/c.sql 
/opt/h/m.sql 

file2

$ cat file2 
/opt/c/c.sql 
/opt/a/a.sql 

Do

awk 'NR==FNR{line[$1];next} 
    {if(!($1 in line)){if($0!=""){print}}} 
    ' file2 file1 > file3 

file3

$ cat file3 
/opt/b/b.sql 
/opt/h/m.sql 

Hinweise:

  1. Die Reihenfolge der Dateien an awk übergeben ist hier wichtig, übergeben Sie die Datei zu überprüfen - file2 hier - zuerst von der Master-Datei gefolgt - file1.

  2. Überprüfen Sie awkdocumentation zu verstehen, was hier getan wird.

1

können Sie einige Tools wie cat, sed, sort und uniq.

Die Hauptbeobachtung ist: Wenn die Zeile beiden Dateien in ist dann ist es nicht eindeutig in cat file1 file2.

Außerdem sind in cat file1 file2| sort alle Doubles in der Reihenfolge. Mit uniq -u wir einzigartige Linien bekommen und haben dieses Rohr:

cat file1 file2 | sort | uniq -u 

Mit sed führenden Leerzeichen, leer und Kommentarzeilen zu entfernen, erhalten wir dieses Endrohr:

cat file1 file2 | sed -r 's/^[ \t]+//; /^#/ d; /^$/ d;' | sort | uniq -u > file3 
Verwandte Themen