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.


(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


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])


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

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".


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.


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.