Probleme beim Zusammenführen mehrerer Textdateien nebeneinander mithilfe von Einfügen

Probleme beim Zusammenführen mehrerer Textdateien nebeneinander mithilfe von Einfügen

Ich muss Hunderte von TXT-Dateien nebeneinander zusammenführen. Ich habe versucht, einige der bereits in den Foren beantworteten Fragen zu verwenden, aber während die Dateien zusammengeführt werden, werden die zweite und dritte (und so weiter) Datei jedes Mal eine Zeile nach unten verschoben. Ich möchte, dass sie ausgerichtet bleiben und alle Dateien die gleiche Anzahl von Zeilen haben (wenn nicht sogar Zeichen in jeder Zeile). Meine Dateien sind durch Kommas getrennt und mein ultimatives Ziel ist es, sie alle für die Datenverarbeitung in Excel zu bringen.

meine Dateien sind

591.txt

CT Analyser, Version: 1.9.3.2 
Date and time,25.07.2014 09:56 
Operator identity,svy557 
Computer name,UT156805 
Computation time,00:08:24
Dataset,591_right__rec_tra_voi 
Location,D:\Pam Mandible Copy\591\Right\Region1\

583.txt

CT Analyser, Version: 1.9.3.2
Date and time,31.07.2014 15:14
Operator identity,svy557
Computer name,UT156805
Computation time,00:10:04
Dataset,583_left__rec_tra
Location,D:\Pam Mandible Copy\583 Left\Reoriented\

Ich habe so etwas wie das Folgende versucht:

paste 591.txt 593.txt | column -s $'\t' -t

es wird folgendermaßen zusammengeführt (die zweite Datei eine Zeile tiefer, statt Zeilen nebeneinander):

CT Analyser, Version: 1.9.3.2
                     CT Analyser, Version: 1.9.3.2
Date and time,25.07.2014 09:56
                    Date and time,25.07.2014 09:55
Operator identity,svy557
                          Operator identity,svy557
Computer name,UT156805
                            Computer name,UT156805
Computation time,00:08:24
                         Computation time,00:08:13
Dataset,591_right__rec_tra_voi
                    Dataset,583_right__rec_tra_voi
Location,D:\Pam Mandible Copy\591 Right\Region1\
  Location,D:\Pam Mandible Copy\583 Right\Region1\

Das macht mich seit ein paar Tagen wahnsinnig und ich wäre für jede Hilfe sehr dankbar. Ich bin ziemlich neu bei UNIX, also versuche ich, genug zu lernen, um dies und dann noch ein paar andere Projekte zu machen, die ähnliche Fähigkeiten erfordern. Die eigentlichen Dateien haben etwa 50 Zeilen und sehen alle so aus, wenn ich versuche, mehr als eine Datei mit etwas wie diesem zu machen:

paste -d '\n' *.txt > new.txt

Die Ergebnisse werden unvorhersehbar

 CT Analyser, Version: 1.9.3.2
CT Analyser, Version: 1.9.3.2
CT Analyser, Version: 1.9.3.2
CT Analyser, Version: 1.9.3.2
CT Analyser, Version: 1.9.3.2
                     CT Analyser, Version: 1.9.3.2

Date and time,25.07.2014 09:55
Date and time,25.07.2014 09:55
Date and time,25.07.2014 09:56
Date and time,25.07.2014 09:56
Date and time,25.07.2014 09:56
                    Date and time,25.07.2014 09:55

Operator identity,svy557
Operator identity,svy557
Operator identity,svy557
Operator identity,svy557
Operator identity,svy557
                          Operator identity,svy557

Computer name,UT156805
Computer name,UT156805
Computer name,UT156805
Computer name,UT156805
Computer name,UT156805
                            Computer name,UT156805

Computation time,00:08:13
Computation time,00:08:13
Computation time,00:08:24
Computation time,00:08:24
Computation time,00:08:24
                         Computation time,00:08:13

Dataset,583_right__rec_tra_voi
Dataset,583_right__rec_tra_voi
Dataset,591_right__rec_tra_voi
Dataset,591_right__rec_tra_voi
Dataset,591_right__rec_tra_voi
                    Dataset,583_right__rec_tra_voi

Location,D:\Pam Mandible Copy\583 Right\Region1\
Location,D:\Pam Mandible Copy\583 Right\Region1\
Location,D:\Pam Mandible Copy\591 Right\Region1\
Location,D:\Pam Mandible Copy\591 Right\Region1\
Location,D:\Pam Mandible Copy\591 Right\Region1\
  Location,D:\Pam Mandible Copy\583 Right\Region1\

Nochmals vielen Dank für alle Hilfe

Antwort1

Ich vermute, dass diese Zeilen Leerzeichen am Ende haben und dadurch ein Zeilenumbruch erfolgt. Haben Sie versucht, den Anfang einer Datei im Oktal-/Hexadezimalformat auszugeben, um zu sehen, ob das der Fall ist?

Sie könnten dann mit einem einfachen sedBefehl alle Dateien in einem sich wiederholenden Shell-Skript reparieren, bevor Sie beginnen.

Antwort2

Hier liegt es wahrscheinlich daran, dass die Originaldateien Windows-Zeilenumbrüche enthalten. Der Befehl pastescheint bei Windows-Zeilenumbrüchen in Kombination mit dem Trennzeichen nicht zu funktionieren. Sie können dies überprüfen, indem Sie odauf die Dateien anwenden. Wenn sie enthalten \r\n, müssen Sie dies zuerst beheben. Dies kann mit behoben werden dos2unix.

Ein Check meines Systems:

[stc@se] $ echo -e "foo\r" > a ; echo -e "bar\r" > b
[stc@se] $ od -c a
0000000   f   o   o  \r  \n
0000005
[stc@se] $ paste a b
foo     bar
[stc@se] $ paste -d"," a b
,bar

Beheben Sie dies mit dos2unix:

[stc@se] $ dos2unix a b
dos2unix: converting file a to Unix format...
dos2unix: converting file b to Unix format...
[stc@se] $ paste -d"," a b
foo,bar

dos2unixist nicht standardmäßig auf allen Linux-Systemen installiert, daher müssen Sie es möglicherweise trotzdem installieren.

verwandte Informationen