2016-12-08 4 views
0

Ich habe zwei verschiedene Linux-Computer, einen mit einem aktuellen Debian und einen neueren Ubuntu, und bei beiden versuche ich Daten aus einer großen Datei (> 6GB) mit grep auf der Befehlszeile in einem Terminal abzugleichen.grep zählen und speichern Übereinstimmungen anders, warum?

Obwohl die Grep-Zahlen gleich sind, unterscheiden sich die Exporte. Ich versuche zu verstehen, warum und wenn es irgendwo in grep irgendwo eine versteckte Einstellung gibt, die dazu führt, dass der Ubuntu-Computer so viele Übereinstimmungen verpasst (in beiden Fällen wurde grep mit apt-get aus dem Standard-Repo installiert und ich benutze das selbe Datei). Debian gibt die Ergebnisse wie erwartet zurück.

Debian:

wc -l file 
returns "33742301 file" 

grep -i "pattern" -c file 
returns "410882" 

grep -i "pattern" file > new_file 
wc -l new_file 
returns "410882 new_file" 

Ubuntu:

wc -l file 
returns "33742301 file" 

grep -i "pattern" -c file 
returns "410882" 

grep -i "pattern" file > new_file 
wc -l new_file 
returns "3911 new_file" 

Also, warum der Unterschied mit Ubuntu, vor allem, da Ubuntu findet seine Wurzeln von Debian?

Ich habe dies mit vielen verschiedenen Textdateien in den letzten 1,5 Jahren versucht und es gibt immer einen signifikanten Unterschied zwischen der Debian-Ausgabe und der Ubuntu-Ausgabe.

+0

Nur eine Vermutung, sind irgendwelche Aliase für Grep definiert? Sie können es mit 'alias grep' überprüfen (vorausgesetzt, Sie verwenden bash). – Heinrich

+0

Zeigen Sie ein Beispiel der Zeilen an, die von Debian, aber nicht von Ubuntu gemeldet werden, möglicherweise mit einem 'xxd'. – choroba

+0

Vielleicht ist Ihr Gebietsschema anders - versuchen Sie es mit 'locale', –

Antwort

0

Grep interpretiert große Dateien als Binärdateien. Versuchen Sie, --text Option zu verwenden, um Textmodus zu erzwingen:

Verwandte Themen