Dateien mit 'cat' zusammenfügen + Leerzeile?

bjoern07

bjoern07

Aktives Mitglied
Thread Starter
Dabei seit
05.02.2007
Beiträge
5.374
Reaktionspunkte
606
Hallo zusammen,

ich habe einen Ordner mit einem Schwung Textdateien. Die sollen in eine Datei zusammengefasst werden.

Geht alles mit cat *.fa > ~/all.fa

Soweit, so gut. Allerdings soll zwischen die Dateien jeweils eine Leerzeile, also ein Absatz und dafür habe ich bei cat keine Option gefunden.

Muss also irgendwie anders gehen.

Wer kann mir sagen, wie?

Achso. Jede Datei beginnt mit einem '>' , wenn ich das richtig gesehen habe.

Sollte man vielleicht mit GREP hinbekommen, ich muss aber gestehen, dass ich von der Anwendung keine Ahnung habe.

Danke für Hilfe.
 
Hi,

ich würde ein kurzes Shell-Script bauen:

Code:
>~/all.fa
for file in *.fa; do
  cat $file >>~/all.fa
  echo >>~/all.fa
done

Achtung, ungetestet. :)

Dirk
 
  • Gefällt mir
Reaktionen: bjoern07
>~/all.fa

ist nicht notwendig und wird auch nicht das gewünschte Ergebnis bringen.
 
  • Gefällt mir
Reaktionen: bjoern07
Danke an Euch beide, funktioniert.

Die erste Zeile habe ich weggelassen und schreibe das Ergebnis in den gleichen Ordner.

Code:
for file in *.fa; do
  cat $file >>all.fa
  echo >>all.fa
done

Dann noch ein
Code:
chmod 755 *
, um das nervige "permission denied" loszuwerden.
 
Man kann übrigens auch die Ausgabe der kompletten Schleife umleiten.
Code:
for f in *.fa; do cat $f; echo; done > ~/all.fa
 
Schöner Ansatz.
Das erlaubt dann auch noch auf einfache Weise eine kosmetische Verbesserung, nämlich die Entfernung der Leerzeile, die beim letzten Schleifendurchlauf am Ende der Datei erzeugt wird:
Code:
for f in *.fa; do cat $f; echo; done | sed \$d > ~/all.fa
 
Ui, auch noch schön :D

Danke vielmals.

Die Routine dient dazu, Datensätze gesammelt einem Programm zum Rechnen vorzuwerfen. Es hat sich an der abschließenden Leerzeile nicht gestört.
 
Zurück
Oben Unten