Angenommen, ich habe eine Datei:
Datei1:
PAPER TEAM MANISH NISHA GARIMA JYOUTI ........etc
Datei2 Ich möchte:
PAPER
TEAM
MANISH
NISHA
GARIMA
JYOUTI
Zeilen zur Spaltenkonvertierung von File1.
awk
sed
text-formatting
Yisha
quelle
quelle
Antworten:
Unter Verwendung
tr
jedes wiederholtes Leerzeichen (Ersetzen) mit einem einzigen neuer Linie (
\n
) Charakter.Aber ich denke du willst so etwas?
Mit
awk
könnten wir tun:Dies fügt die gleiche Feldnummerposition zusammen und gibt
END
das Ergebnis aus, das die erste Zeile in der ersten Spalte, die zweite Zeile in der zweiten Spalte usw. sein würde. Natürlich ist die Eingabedatei auf Ihre Speichergröße beschränkt.quelle
Sie könnten dies einfach durch grep tun. Standardmäßig würde grep die Übereinstimmung in einer separaten Zeile ausgeben.
ODER
quelle
grep
Sie können auch den folgenden
fmt
Befehl verwenden:quelle
Mit GNU Datamash :
quelle
datamash
scheint das beste Werkzeug für diese Aufgabe zu sein, aber faszinierend, wie viele andere Werkzeuge verwendet werden könnten!Sie können dies auch tun mit
sed
:HINWEIS: Behandelt nicht die Situation, in der die Wörter Leerzeichen enthalten.
quelle
Verwenden Sie
awk
, um das Ausgabefeld-Trennzeichen (OFS
) als Datensatz- (Zeilen-) Trennzeichen (RS
) festzulegen :quelle
Verwenden einer
for
Schleife:quelle
Sie können es auch mit versuchen
sed
Bitte beachten Sie, dass ich
@
als Trennzeichen für die Substitution verwende. Dadurch wird auch eine Sicherungsdatei erstellt. Falls Sie kein Backup benötigen, entfernen Sie .bakquelle
Python-Version:
Dies nutzt
<
Umleitung in Pythons stdin voninput.txt
und schreibt inoutput.txt
die>
Umleitung. Der Einzeiler selbst liest alle Zeilen vonstdin
in eine Liste von Zeichenfolgen ein, in der alle Leerzeichen durch Zeilenumbrüche ersetzt werden, und wir erstellen den gesamten Text mithilfe von neu.join()
Funktion neu.Ein alternativer Ansatz, um zu vermeiden, dass mehrere Leerzeichen in einer Reihe durch Zeilenumbrüche ersetzt werden, besteht darin
.split()
, die Zeile in eine Liste von Wörtern zu unterteilen. Auf diese Weise können wir sicherstellen, dass jedes Wort nur durch eine neue Zeile getrennt wirdquelle
Mit
xargs
, (aus souravcs Antwort gestohlen ):Oder wenn eine geringfügige Neuformatierung erforderlich ist, verwenden Sie
printf
Formatzeichenfolgen, wie auch immer erforderlich sein mag:quelle
Meine Lösung wäre:
quelle
quelle