2009-10-01 2 views
6

C'è un modo per sostituire alcuni caratteri in un file di testo con un file batch?Sostituzione di caratteri in un file di testo con un file batch

Non ho trovato alcun comando per farlo.

+0

puoi dare un esempio di cosa vuoi sostituire (prima e dopo)? – akf

+0

Volevo semplicemente sostituire in un file di testo tutte le occorrenze di "<" con un carattere vuoto. –

risposta

4

La risposta più immediata è "No, non con finestre utilità di base"

Ma, come le altre risposte hanno suggerito, ci sono un sacco di porte Unix là fuori che fare quello che vuoi. Prendi a gnuwin32 packages.

EDIT:

Va bene, rivedere la mia rigorosa "No". Potrebbe esserci un modo per farlo, a seconda della complessità del tuo compito e del tuo sistema operativo. Quando si utilizza Windows 2000 e versioni successive, cmd fornisce estensioni di comando che è possibile utilizzare.

L'idea di base è utilizzare un ciclo FOR per scorrere ciascuna riga di un file di input e quindi utilizzare la sostituzione di stringa fornita dal comando SET per sostituire i caratteri.

Non ho alcuna soluzione a portata di mano, ma si potrebbe provare da soli, utilizzando un'infrazione dal sito piuttosto bello. Guarda here per la sintassi del ciclo FOR e here per la sostituzione delle stringhe.

+0

+1 per gnuwin32. –

+2

Il problema di base con l'iterazione del file è che quando contiene caratteri speciali come '&', '|' o '>' diventa disordinato. Getta un numero dispari di virgolette in una riga e tutte le scommesse sono disattivate. Non ho trovato un modo per sfuggire correttamente tali caratteri quando ci sono numeri dispari di virgolette in una riga. Altrimenti è facile ma disordinato. – Joey

+0

Oh, solo un'altra cosa: 'for' salta le righe vuote. Se hai bisogno del file per sopravvivere, compresi quelli che devi cercare altre soluzioni. – Joey

0

È possibile cercare un programma da riga di comando come GREP che è possibile chiamare da un batch che prenderà una stringa di sostituzione e un file e farà lo scambio per conto dell'utente.

+0

Grep è usato per eseguire la ricerca/filtro ... anche wikipedia lo sa: http://en.wikipedia.org/wiki/Grep – enguerran

+0

In effetti, sed è più specifico solo per quella attività, ma FYI, ci sono Windows/DOS varianti di grep che consentono anche la sostituzione. – Deverill

0

È possibile utilizzare la porta DOS dell'utilità della riga di comando Unix "tr".

Una porta DOS libera può essere found here, uno di quelli che mi piace (ce ne sono molti diversi) sono "UXUTL - Raccolta completa di utilità Unix a riga di comando per DOS".

Il vantaggio è che si ottiene un sacco di comandi incredibilmente utili, non solo tr.

1

è possibile installare UnxUtils e poi fare

sed "s/WORD_FROM/WORD_TO/" file_name > changed.file.name 

per cambiare le parole o

cat file|tr "a" "b" > changed.file.name 

per cambiare caratteri

1

Usa sed o niente:

sed -i 's/FROM/TO/g' filename.txt 

sed può essere scaricato here, per varie piattaforme.

1

È necessario utilizzare WIN32 SED e vedere la pagina ufficiale di gnu sed per la spiegazione. E 'davvero potente:

> sed "s/WORD_FROM/WORD_TO/" file_name > changed.file.name 
0

Anche se questa domanda è abbastanza vecchio, lettore futuro può essere interessati a sapere che se si vuole un piccolo exe senza dipendenze solo per la sostituzione del testo mi consiglia di utilizzare FART.