Im heutigen Tutorial zur Linux-Dateiverwaltung werden wir uns gültige Ansätze ansehen, um mehrere Zeilen innerhalb einer Datei zu einer einzigen Zeile zu verbinden. Am Ende dieses Artikels werden Sie Ihrer Erfahrung mit der Linux-Dateiverwaltung einige Computing-Meilensteine hinzugefügt haben.
[Das könnte Ihnen auch gefallen:So verbinden Sie zwei Textdateien unter Linux]
Die Möglichkeiten/Möglichkeiten für Benutzer, die das Linux-Betriebssystem über die Befehlszeilenschnittstelle nutzen, sind weiterhin endlos. Eine solche Möglichkeit besteht darin, eine mehrzeilige Datei über eine Reihe von Linux-Befehlen in eine einzeilige Datei zu manipulieren. Das Ziel für das Zusammenführen solcher Zeilen kann so einfach sein wie das Hinzufügen benutzerdefinierter Trennzeichen zur Zieldatei.
Problembeschreibung
Da sich dieses Tutorial auf das Zusammenführen mehrerer Zeilen zu einer einzigen Zeile in einer Zieldatei konzentriert, müssen wir eine solche Art von Datei zu Referenzzwecken erstellen und sie mit einigen mehrzeiligen Daten füllen.
$ sudo nano sample_file.txt
Gemäß obiger Bildschirmaufnahme handelt es sich um eine Datei (sample_file.txt ) mit sechs Zeilen, und es gibt drei Ansätze, diese sechs Zeilen zu verbinden:
- Ohne Trennzeichen:Ich liebeLinuxShellTipsTutorials wirklich!
- Mit einem einzelnen Trennzeichen:Ich liebe Linux.Shell,Tipps,Tutorials!
- Mit Trennzeichen aus mehreren Zeichen:Ich liebe wirklich;Linux;Shell;Tipps;Tutorials!
Wie man mehrere Zeilen in einer Datei zu einer einzigen Zeile zusammenfügt
Werfen wir einen Blick auf diese drei Ansätze, um unter Linux mehrere Zeilen innerhalb einer Datei zu einer einzigen Zeile zusammenzufügen.
1. Verwenden des sed-Befehls
Die Macht des sed Das Textverarbeitungs-Befehlszeilendienstprogramm ermöglicht es uns, die sechs Zeilen in unserer Beispieltextdatei zu verbinden, indem wir die oben beschriebenen drei Ansätze in Bezug auf fast dieselbe Codesyntax behandeln.
Ohne Trennzeichen:
$ sed ':a; N; $!ba; s/\n//g' sample_file.txt
Mit Abstand:
$ sed ':a; N; $!ba; s/\n/ /g' sample_file.txt
Mit einem Einzelzeichen-Trennzeichen, z. ein Komma:
$ sed ':a; N; $!ba; s/\n/,/g' sample_file.txt
Mit Trennzeichen für mehrere Zeichen, z. Semikolon und Leerzeichen:
$ sed ':a; N; $!ba; s/\n/; /g' sample_file.txt
2. Verwenden des awk-Befehls
Das Linux-awk command ist ein weiteres seriöses Befehlszeilentool zur Textverarbeitung. Sein Ansatz zur Lösung unseres Multi-Line-zu-Single-Line-Problems kann auf folgende Weise analysiert und implementiert werden:
Ohne Trennzeichen:
$ awk -v d="" '{s=(NR==1?s:s d)$0}END{print s}' sample_file.txt
Mit Abstand:
$ awk -v d=" " '{s=(NR==1?s:s d)$0}END{print s}' sample_file.txt
Mit einem Einzelzeichen-Trennzeichen, z. ein Komma:
$ awk -v d="," '{s=(NR==1?s:s d)$0}END{print s}' sample_file.txt
Mit Trennzeichen für mehrere Zeichen, z. Semikolon und Leerzeichen:
$ awk -v d="; " '{s=(NR==1?s:s d)$0}END{print s}' sample_file.txt
3. Verwenden des Einfügen-Befehls
Die Paste Der Befehl ist nur ideal, um mehrere Zeilen ohne Trennzeichen, mit Leerzeichen und mit einem einzelnen Trennzeichen zu verbinden. Dieses Dienstprogramm befindet sich unter den GNU Coreutils Paket daher seine Verfügbarkeit auf allen Linux OS-Distributionen.
Ohne Trennzeichen:
$ paste -sd '' sample_file.txt
Mit Abstand:
$ paste -sd ' ' sample_file.txt
Mit einem Einzelzeichen-Trennzeichen, z. ein Unterstrich:
$ paste -sd '_' sample_file.txt
Der abschließende Unterstrich (_)
kann entfernt werden, indem der paste-Befehl an einen sed-Befehl weitergeleitet wird:
$ paste -sd '_' sample_file.txt | sed 's/_$/\n/'
Dieser Ansatz ist nicht ideal mit Trennzeichen aus mehreren Zeichen, z. B. einem Semikolon und einem Leerzeichen, wegen unregelmäßiger Ausgaben wie der folgenden:
$ paste -sd '; ' sample_file.txt
4. Verwenden des tr-Befehls
Der tr-Befehl ist auch ideal zum Verbinden mehrerer Zeilen ohne Trennzeichen, mit Leerzeichen und mit einem einzelnen Trennzeichen.
Ohne Trennzeichen:
$ tr -d '\n' < sample_file.txt
Mit Abstand:
$ tr '\n' ' ' < sample_file.txt
Mit einem Einzelzeichen-Trennzeichen, z. ein Komma:
$ tr '\n' ',' < sample_file.txt
Leiten Sie die Ausgabe an einen sed-Befehl, um die zusätzlichen Kommas loszuwerden.
$ tr '\n' ',' < sample_file.txt | sed 's/,,$/\n/'
Wir haben erfolgreich gelernt, wie man mehrere Zeilen in einer Datei unter Linux zu einer einzigen Zeile zusammenfügt.