2017-11-30 2 views
-1

Ich habe 2 Dateien im folgenden Format: -Suchen und Vergleichen Shell-Skript

File 1.txt 
id : 12 
name : abc 
value : 10 
date : 11/20/2017 
Mon : Nov 

File 2.txt 
name     : abc 
id     : 123 
date     : 11/20/2017 
value    : 10 
Year     : 2017 

Ich möchte eine Ausgabe wie

File Mismatch :id mismatch , File 1 Year missing , File 2 Mon Missing 

Ich versuchte diff verwenden, aber das wird durch Zeilenübereinstimmungsvergleichers nur Zeile tun und wenn es in der gleichen Reihenfolge ist, wird es sagen, dass es übereinstimmt oder es wird Differenz anzeigen.

Grüße,

+2

Was haben Sie versucht, eine Datei? Wie ist es gescheitert? – choroba

+0

Ich versuchte mit diff, aber das funktioniert nicht. Jetzt bin ich total ahnungslos was ich vergleichen soll. – user2854333

+0

gibt nicht das genaue Format, das Sie benötigen, aber Sie können beide Dateien sortieren und 'diff -b' verwenden, um Leerzeichen Unterschiede zu ignorieren. Um genaue Ausgabe zu erhalten, müssen Sie Ihr eigenes Programm schreiben, sagen mit awk .. – Sundeep

Antwort

1

Um eine ausführliche diff Ausgang (für die 1. Phase) zu erhalten:

diff -b <(sort 1.txt) <(sort 2.txt) 

Der Ausgang:

2,3c2 
< id : 12 
< Mon : Nov 
--- 
> id     : 123 
5a5 
> Year     : 2017 

  • < id : 12 und < Mon : Nov Linien sind uniq ue 1.txt
  • > id : 123 und > Year : 2017 sind Zeilen, die nur in Datei 2.txt
+0

Vielen Dank. Ich glaube ich fehlte Sortierung – user2854333

Verwandte Themen