Ich habe eine einfache Textdatei mit dem Namen "example".
Lesen mit Terminalbefehl: cat example
Ausgabe:
abc cdef ghi jk lmnopq rst uv wxyz
Ich möchte in folgende Form konvertieren (transformieren): (erwartete Ausgabe von cat example
)
abc
cdef
ghi
jk
lmnopq
rst
uv
wxyz
Wie kann ich das über die Kommandozeile machen?
(Dies ist nur eine Beispieldatei, ich möchte die Position des Wortes in die vertikale Spalte konvertieren. )
command-line
text-processing
Pandya
quelle
quelle
Antworten:
Ein paar Möglichkeiten:
Der Klassiker, verwenden Sie
tr
:Verwenden
cut
Verwenden
sed
Verwenden
perl
Verwenden Sie die Shell
quelle
sed
Beispiel musste ich a hinzufügen$
, um bash durch eine aktuelle Newline zu ersetzen, dh:sed $'s/ /\\\n/g' example
sed $'s/ /\\n/g'
Versuchen Sie den folgenden Befehl
ODER
Beispiel:
Erläuterung:
RS (Record Seperator) ist eine eingebaute awk-Variable. Im ersten Befehl wird der Wert für die Variable Datensatztrennzeichen als Leerzeichen angegeben. awk unterbricht die Zeile beim Drucken, wenn ein Leerzeichen gefunden wird.
Im zweiten Befehl wird der RS-Variable ein Leerzeichen oder ein neues Zeilenzeichen zugewiesen. Mit diesem Befehl wird die zusätzliche Leerzeile entfernt, die beim Ausführen des ersten Befehls angezeigt wurde.
quelle
Sie können verwenden
xargs
,oder besser
quelle
xargs -n 1 < example
rettet Sie 1 KätzchenMit einem
perl
Oneliner:Leerzeichen und Tabulatoren werden durch "ENTER" (aka
\n
) ersetzt.quelle
Niemand hat Python gepostet, also hier ist das:
Wir leiten die Eingabedatei in
python
den Standard-Stream um und lesen sie Zeile für Zeile. Jede Zeile wird von ihrer abschließenden neuen Zeile befreit, in Wörter aufgeteilt und dann zu einer neuen Zeichenfolge zusammengefasst, in der jedes Wort durch eine neue Zeile getrennt wird. Auf diese Weise wird sichergestellt, dass ein Wort pro Zeile vorhanden ist und nicht mehrere neue Zeilen eingefügt werden, falls mehrere Leerzeichen daneben stehen gegenseitig. Schließlich erhalten wir eine Liste von Zeichenfolgen, die dann wieder zu einer größeren Zeichenfolge zusammengefügt und als stdout-Stream ausgedruckt werden. Das kann später mit Umleitung in eine andere Datei> out.txt
umgeleitet werden.quelle
Ähnlich wie 'tr' oben, aber mit den Ergänzungen:
Funktioniert auch für Tabs
Konvertiert mehrere Leerzeichen oder Tabulatoren in eine neue Zeile
quelle