Kopf und Katze erkennen Microsoft Excel-Textdateien nicht

917
Marcus Nunes

Ich habe eine große XLS-Datei mit 53760 Zeilen und 19 Spalten. Ich habe es als tabulatorbegrenzter Text gespeichert, um es mit Befehlszeilenwerkzeugen vorverarbeiten und später in R laden zu können. Allerdings wenn ich renne

head myfile.txt 

Mein Terminal zeigt alle Zeilen auf einmal, wie das

cat myfile.txt 

Befehl soll tun. Aber wenn ich renne

cat myfile.txt | wc -l 

Die Antwort, die ich bekomme, ist 0. Interessanterweise kann R meine Daten ohne Zuhilfenahme eines zusätzlichen Pakets lesen und alle 53760 Zeilen und 19 Spalten identifizieren. Ich nehme an, es ist ein Excel-Problem, aber ich kann nicht herausfinden, was es ist.

Ich verwende Mac OS 10.9.1, Microsoft Excel für Mac 2011, bash 4.2 und iTerm 2 1.0.0.20130622

1
IIRC zählt dann sowohl Kopf- als auch WC-Linien und benötigt ihren erwarteten Zeilenende-Marker. Diese Markierung unterscheidet sich leider für verschiedene Systeme (z. B. Unix, Windows und das ältere Apple-Betriebssystem (das vor OS X), das als Codes 10, 10 und 13 verwendet wurde (Zeilenumbrüche und Zeilenumbrüche). Können Sie prüfen, in welchem ​​Format ist in deiner datei? Hennes vor 10 Jahren 2
Ihr Vorschlag hat Sinn gemacht. Ich habe von Excel zu LibreOffice gewechselt, meine Datei als .csv-Datei exportiert und funktioniert jetzt. Vielen Dank! Marcus Nunes vor 10 Jahren 0

1 Antwort auf die Frage

0
Billy McCloskey

Gehen Sie unter Linux und Mac OS in vi, führen Sie die folgende Ersetzung durch, und speichern Sie die Datei erneut. Das sollte für Sie funktionieren.

$ vi myfile.txt :%s/^V^M/^V^M/g :wq 

Dabei bedeutet ^ V ^ M Strg + V, dann Strg + M und beendet jede Zeile mit einem Return.

Dies sollte normale UNIX-Zeilenabschlusszeichen an das Ende der durch Excel getrennten Wertzeilen setzen. Sie könnten sogar ein vi-Skript erstellen, um es zu automatisieren, wenn Sie es häufig tun, und dann dieses vi-Skript von einem Bash-Skript aus aufrufen, all diese Unvereinbarkeiten des Systems ausblenden und dos2unix nennen. :-)

Gehen Sie folgendermaßen vor, um das Vim-Skript in dos2unix.vim zu erstellen:

  1. Erstellen Sie das Skript mit

    $ vi -w dos2unix.vim meineDatei.txt

  2. Geben Sie die 3-Zeilen-Sequenz wie oben erwähnt sorgfältig ein.

  3. Wenden Sie diesen Scrip jetzt auf jede Datei mit an

    $ vi -s dos2unix.vim anyfile.txt

Und das alles in ein Bash-Skript oder sogar in ein Alias ​​zu packen, liegt in Ihrem Ermessen

alias dos2unix='vi -s ~/.vimscripts/dos2unix.vim ' 

Um es so machen zu können, wie es eingebaut wurde, weil es jetzt der Fall ist, erstellen Sie einfach einen Ordner mit dem Namen ~ / .vimscripts und fügen Sie die oben erstellte Skriptdatei dort ein.