Ich habe eine Textdatei:
a aa aaa b bb bbb c cc ccc
d dd ddd e ee eee f ff fff
g gg ggg h hh hhh i ii iii
j jj jjj
Wie kann ich es verarbeiten und eine 2-Spalten-Datei wie folgt erhalten:
a aa
aaa b
bb bbb
c cc
ccc d
dd ddd
e ee
eee f
ff fff
g gg
ggg h
hh hhh
i ii
iii j
jj jjj
Oder eine dreispaltige Datei wie diese:
a aa aaa
b bb bbb
c cc ccc
d dd ddd
e ee eee
f ff fff
g gg ggg
h hh hhh
i ii iii
j jj jj
Ich bevorzuge awk Lösung, aber andere Lösungen sind auch willkommen.
text-processing
awk
Nur ein Anfänger
quelle
quelle
$1
als Format - String zuprintf
?"%s", ...
. Aktualisiertawk
übrigens für den Befehl in deiner anderen Antwort auf diese Frage.Setze jedes Feld in eine Zeile und post-columnate.
Jedes Feld in einer Zeile
tr
grep
sed
oder tragbarer:
awk
oder
Kolumne
Einfügen
Für 2 Spalten:
Für 3 Spalten:
etc.
sed
Für 2 Spalten:
Für 3 Spalten:
etc.
xargs
Als
xargs
Anwendungen/bin/echo
passen sie zu drucken, dass die Daten , die wie Optionen aussehenecho
als solche interpretiert werden.awk
pr
oder
Spalten (aus dem Autogen-Paket)
Typische Ausgabe:
quelle
xargs
Leitung nicht anrufenecho
oderprintf
?xargs
Anrufe/bin/echo
standardmäßigxargs
Optionen zu sein,/bin/echo
die Probleme verursachen ... Ich habe eine Warnung hinzugefügt.quelle
Wie Wildcard hervorhob, funktioniert dies nur, wenn Ihre Datei gut formatiert ist. Es gibt keine Sonderzeichen, die die Shell als Globs interpretiert, und Sie sind mit den Standardregeln für die Wortteilung zufrieden. Wenn Sie Fragen dazu haben, ob Ihre Dateien diesen Test "bestehen", verwenden Sie diesen Ansatz nicht.
Eine Möglichkeit wäre,
printf
es so zu machenDas führt eine Wortteilung auf den Inhalt von aus
your_file
und verbindet sie und druckt sie mit Tabulatoren dazwischen. Sie können weitere%s
Formatzeichenfolgen in verwendenprintf
, um zusätzliche Spalten zu erhalten.quelle
(Ersetzen Sie 4 durch die Anzahl der Spalten)
quelle
BSD
rs
(Reshape) -Dienstprogramm:0 2
ist Zeilen und Spalten . Die Angabe0
bedeutet "Zeilen automatisch aus Spalten berechnen".quelle
Python-Skript-Ansatz.
Grundlegende Idee hierbei ist, alle Wörter in Ihrem Text in einer Liste zusammenzufassen und dann nach jedem zweiten Element eine neue Zeile auszudrucken (dh in zwei Spalten aufzuteilen). Wenn Sie 3 Spalten möchten, wechseln Sie
index%2
zuindex%3
Beispielausgabe:
Dreispaltige Version (wie oben erwähnt, nur
index%3 == 0
geändert)quelle