Ich habe ein einfaches Textdateibuch aus Project Gutenberg (ca. 0,5 MB) genommen, das ich n
mal mit sich selbst verknüpfen möchte , um eine große Textdatei zu generieren, mit der ich einige Algorithmen vergleichen kann. Gibt es einen Linux-Befehl, mit dem ich dies erreichen kann? cat
Hört sich ideal an, scheint aber beim Verketten einer Datei mit sich selbst nicht allzu gut zu sein, und geht nicht direkt auf den n
zeitlichen Teil der Frage ein.
linux
concatenation
Bryce Thomas
quelle
quelle
Antworten:
Dazu gibt es zwei Teile: Zunächst muss cat verwendet werden, um die Textdatei in der Standardausgabe auszugeben, und mit append wird sie einer anderen Datei hinzugefügt. Beispiel: foo.txt >> bar.txt foo.txt wird an bar.txt angehängt
dann starte es n mal mit
Ersetzen Sie n in diesem Befehl durch Ihre Nummer
sollte funktionieren, wobei n deine nummer ist
Wenn Sie csh verwenden, gibt es den Befehl 'repeat'.
Wiederholungsbezogene Teile der Antwort werden von hier kopiert , und ich habe sie auf einem Ubuntu 11.04-System auf der Standard-Bash-Shell getestet.
quelle
{1..12}
wird der Körper 12 mal richtig laufen.for i in {1..n};do cat foo.txt; done > bar.txt
Mir ist langweilig, daher hier noch ein paar Methoden, wie man eine Datei mit sich selbst
head
verknüpft , meistens als Krücke. Verzeihen Sie mir, wenn ich mich selbst übererkläre, ich sage einfach gerne Dinge: PAngenommen,
N
die Anzahl der Selbstverkettungen, die Sie ausführen möchten, und der Name Ihrer Dateifile
.Variablen:
In Anbetracht der eine Kopie
file
genanntfile2
,total_repeats
ist die Anzahl der Malefile
hinzugefügt werden müssten ,file2
um es die als gleiche zu machen , wennfile
wurde mit sich selbst verkettetN
mal.Said MATH is here, mehr oder weniger: MATH
Es ist erst ein Semester Informatik, aber es ist schon eine Weile her, dass ich einen Induktionsnachweis gemacht habe, damit ich nicht darüber hinwegkomme
2^Loops
...POSIX
Ich benutze ein paar nicht-posix Dinge, aber sie sind nicht wesentlich. Für meine Zwecke:
Oh, das habe ich nur benutzt. Na ja, der Abschnitt ist schon da ...
Methoden
head
mit Zählerverfolgung.Keine temporäre Datei, keine Katze, noch nicht einmal zu viel Mathe, alle Freude.
tee
mit MATHHier
tee
wird von gelesen,file
aber ständig angehängt, sodass die Datei bei Wiederholung so lange gelesen wird, bis siehead
angehalten wird. Und wir wissen, wann wir es wegen MATH beenden müssen . Das Anhängen geht über Bord, also habe ich eine temporäre Datei verwendet. Sie könnten auch die überschüssigen Linienfile
abschneiden.eval
, der Herr der Dunkelheit!Dies wird einfach erweitert
cat file file file ...
und ausgewertet. Sie können dies auch ohne die$tmp
Datei tun :Der zweite
head
"Trick" besteht darincat
, einen Zwischenmenschen zwischen den Schreibvorgang zu setzen. Sie könnten auchcat
mit einem anderen tricksen,cat
aber das hat ein inkonsistentes Verhalten. Versuche dies:sed
:Erzwingt das
sed
Lesen der gesamten Datei als Zeile, erfasst sie vollständig und fügt sie dann$total_repeats
mehrmals ein.Dies schlägt natürlich fehl, wenn Ihre Datei Nullzeichen enthält. Wählen Sie einen aus, von dem Sie wissen, dass er nicht da ist.
Das ist alles, Jungs, ich hoffe, diese willkürliche Antwort hat niemanden gestört. Ich habe sie alle oft getestet, aber ich bin nur ein zweijähriger Shell-Benutzer. Denken Sie also daran, denke ich. Jetzt schlafen ...
rm $tmp
quelle
Sie können dafür sicherlich Folgendes verwenden
cat
:Um
$n
Kopien zu erhalten, können Sieyes
Folgendes verwendenhead -n $n
:Wenn man das zusammensetzt, ergibt sich
quelle