Come invertire un file di testo su Windows


3

Come posso invertire il contenuto di un file .txt preservando le righe vuote?

Per esempio,

text one

text two
text three

text four


text five


text six

potrebbe diventare

text six


text five


text four

text three
text two

text one

Preferibilmente con la console di Windows o anche il codice sorgente da compilare a un'applicazione. Ho Windows 7.


(Rispondendo al mio post poiché non riesco a pubblicare una risposta con <10 reputazione. Grazie per le risposte!) Ho trovato qualcosa: tac, che fa parte di CoreUtils per Windows . L'ho appena provato e funziona bene per me.
AD


1
Ho anche verificato due volte che non sono su http://codegolf.stackexchange.com/
VL-80

I tag sono stati rimossi dalla tua domanda per un motivo. Questi tag non sono utili e non aggiungono nulla di valore alla tua domanda.
Der Hochstapler,

Alcune delle risposte in ordine inverso o inverso in Notepad ++ dovrebbero essere qui.
Peter Mortensen,

Risposte:


6

Questo può essere fatto facilmente con PowerShell senza strumenti aggiuntivi:

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


1

Un altro esempio di PowerShell. Questo mostra solo l'inversione. Sarebbe banale esportare $ x in un file.

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

0

Vorrei leggere il file in ordine inverso (usando uno script, un programma, ecc.) E scriverlo in un "nuovo" file evitando così un ordinamento. Quindi, elimina il file "vecchio" e rinomina quello "nuovo" con quello "vecchio".


0

Nella maggior parte dei casi, un ordinamento tipico non preserverà le tue righe vuote, ma le metterà invece tutte insieme da qualche parte nel tuo ordinamento. Se fossi in me, avrei semplicemente copiato e incollato le linee in Excel e ordinato lì se fosse solo una cosa una tantum. Altrimenti ti occuperai di alcuni script davvero fantasiosi per farlo (ma hey, è possibile farlo).

Per quanto riguarda lo script, avrei prima un po 'di codice che cerca le righe vuote e salva quella posizione in un array. Quindi ordinerei il resto dei dati, usando un metodo di ordinamento incorporato o creando il mio codice "bubble sort". Una volta ordinati, reintroduci le interruzioni di riga nelle posizioni indicate e verrai impostato.


0

Ecco qualcosa di nativo: uno 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

Salvalo come (es.) Revfile.vbs ed eseguilo usando il motore cscript. Come scritto, fa eco all'output sulla console. Per scrivere le righe invertite in un file, utilizzare l' >operatore (reindirizzamento) in questo modo:

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

Usa le virgolette attorno ai nomi / percorsi dei file se hanno spazi.

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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.