Comment inverser un fichier texte sous Windows

3

Comment inverser le contenu d'un fichier .txt tout en préservant les lignes vides?

Par exemple,

text one

text two
text three

text four


text five


text six

deviendrait

text six


text five


text four

text three
text two

text one

De préférence avec la console Windows ou également le code source pour compiler une application. J'ai Windows 7.

UN D
la source
(Réponse à mon propre message car je ne peux pas publier de réponse avec une réputation <10. Merci pour vos réponses!) J'ai trouvé quelque chose: tac, qui fait partie de CoreUtils pour Windows . Je viens de le tester et ça fonctionne bien pour moi.
AD
Duplication possible de Comment inverser un fichier texte sous Windows
and31415
1
J'ai même vérifié deux fois que je ne suis pas sur http://codegolf.stackexchange.com/
VL-80
Les tags ont été supprimés de votre question pour une raison. Ces balises ne sont pas utiles et n'ajoutent rien de valeur à votre question.
Der Hochstapler
Certaines des réponses en ordre de bascule ou ligne inversée dans Notepad ++ devraient être ici.
Peter Mortensen le

Réponses:

6

Cela peut être fait facilement avec PowerShell sans aucun outil supplémentaire:

$x = Get-Content -Path data.txt; Set-Content -Path data.txt -Value ($x[($x.Length-1)..0])
MFT
la source
2

J'ai trouvé l'outil idéal pour cela: tac (une partie de CoreUtils pour Windows )

UN D
la source
1
Veuillez lire Comment recommander un logiciel pour obtenir les informations minimales requises et d’autres suggestions sur la façon de recommander un logiciel pour Super User. Pour que votre réponse reste utile même si le (s) lien (s) inclus (s) est rompu, modifiez ces informations dans votre réponse.
Twisty Impersonator
1

Un autre exemple PowerShell. Cela montre simplement l'inversion. Il serait trivial d'exporter $ x dans un fichier.

$x = Get-Content -Path .\abc.txt
[array]::Reverse($x)
$x
Jacob
la source
0

Je lirais le fichier dans l'ordre inverse (en utilisant un script, un programme, etc.) et l'écrirais dans un "nouveau" fichier, évitant ainsi un tri. Ensuite, supprimez le fichier "ancien" et renommez le "nouveau" en "ancien".

rrirower
la source
0

Dans la plupart des cas, une sorte typique ne conservera pas vos lignes vides, mais les placera toutes ensemble quelque part dans votre sorte. Si c'était moi, je copierais et collerais les lignes dans Excel et trierais s'il s'agissait d'une chose ponctuelle. Sinon, vous allez vous lancer dans des scripts très sophistiqués (mais bon, c'est possible).

En ce qui concerne le script, j’aurais d’abord un code qui recherche les lignes vides et enregistre cet emplacement dans un tableau. Ensuite, je triais le reste des données, en utilisant une méthode de tri intégrée ou en créant mon propre code de "tri à bulles". Une fois triés, réintroduisez les sauts de ligne aux emplacements indiqués et vous serez configurés.

Bradley Forney
la source
0

Voici quelque chose de natif - un script VBScript (.vbs).

Const ForReading = 1
Set objFSO = CreateObject("Scripting.FileSystemObject")
infile = Wscript.Arguments(0)
Set objTextFile = objFSO.OpenTextFile (infile, ForReading)
strText = objTextFile.ReadAll
objTextFile.Close
arrText = Split(strText, vbCrLf)
for l = ubound(arrText)-1 to 0 step -1
   wscript.echo arrText(l)
Next

Enregistrez-le sous (par exemple) revfile.vbs et exécutez-le à l'aide du moteur cscript. Comme indiqué, il renvoie la sortie à la console. Pour écrire les lignes inversées dans un fichier, utilisez l' >opérateur (redirection) comme ceci:

cscript //nologo revfile.vbs "input.txt" > "output.txt"

Utilisez des guillemets autour des noms de fichiers / chemins s’ils contiennent des espaces.

C:\Test>type input.txt
apple
bear
cat
dog
egg
fog
gas
hip

ink
joe
kilo

C:\Test>type output.txt
kilo
joe
ink

hip
gas
fog
egg
dog
cat
bear
apple
Michael Harvey
la source