Ho un file con alcuni caratteri non stampabili che appaiono come^C o^B, voglio trovare e sostituire quei caratteri, come faccio a farlo?Come sostituire o trovare caratteri non stampabili in regex di vim?
risposta
dire che si desidera sostituire^C con C:
:%s/CtrlVC/C/g
Dove CtrlVC significa tipo V, allora C tenendo premuto Ctrl premuto.
CtrlV consente di immettere caratteri di controllo.
È possibile utilizzare:
:%s/^C//g
Per ottenere risultati ^C
premuto il tasto di controllo, premere V
quindi C
(Sia tenendo premuto il tasto di controllo) e apparirà la ^C
. Questo troverà tutte le occorrenze e le sostituirà con nulla.
Per rimuovere sia ^C
e ^B
si può fare:
:%s/^C\|^B//g
Prova questo dopo aver salvato il file in vim (supponendo che si sono in ambiente Linux)
:%!tr -cd '[:print:]\n'
per favore spiega questo giorno salvando il magico voodoo! – Prospero
@JamesAndino: ':%' filtra tutte le righe usando il programma esterno ('!') 'Tr', che _removes_ (' -d') tutti i caratteri che sono _not_ ('-c') _printable_ (' [: print: ] ') o _newline_ (' \ n'). – quasimodo
Non è compatibile con Unicode, poiché è una classe di caratteri POSIX (http://en.wikipedia.org/wiki/Regular_expression#Character_classes). Quindi se hai YAML con dati come 你好, 'tr' spoglierà i dati Unicode quando userai' [: print:] '. – ash
Rimozione solo simboli di controllo:
:%s/[[:cntrl:]]//g
rimuovendo i caratteri non stampabili (rimuove i caratteri non ASCII anche):
:%s/[^[:print:]]//g
Almeno fino a vim 7.3 [: print:] corrisponde solo ai caratteri stampabili ASCII (modificato la risposta per avvisare i lettori di questo fatto) – ndemou
@ndemou Questo è difficile, con il [] attorno a [: print:] il^dovrebbe invertire corrisponde e restituisce qualsiasi non stampabile. O forse quella era la tua modifica? – dragon788
@ dragon788, sì, ero a conoscenza di come funziona quando ho scritto il mio commento. Prova la 2 regex sul testo con caratteri Unicode stampabili al di fuori della tabella ASCII per capire il mio commento (rimuoverà i caratteri Unicode). – ndemou
Nessuna delle risposte qui utilizzando i caratteri di controllo di Vim ha funzionato per me. Ho dovuto inserire un intervallo Unicode.
:%s/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x9F]//g
Quella gamma unicode è stato trovato su questo altro post: https://stackoverflow.com/a/8171868/231914
Poiché TAB è considerato non stampabile, quindi [[: cntrl:]] e [^ [: print:]] corrispondono a TAB (0x9, C-I) – mosh
- 1. Vim regex sostituire con n caratteri
- 2. Come posso sostituire i caratteri Unicode non stampabili in Java?
- 3. Vim Regex Sostituire
- 4. (g) vim sostituire regex
- 5. Regex per sostituire i caratteri non validi
- 6. Evidenziazione e sostituzione di caratteri Unicode non stampabili in Emacs
- 7. Perché i caratteri ASCII non stampabili sono effettivamente stampabili?
- 8. vim: come cercare/sostituire caratteri speciali?
- 9. Rileva caratteri non stampabili in JavaScript
- 10. ruby regex trovare e sostituire
- 11. RegEx (in JavaScript trovare/sostituire) - Partita di caratteri non alfanumerici, ma ignora - e +
- 12. Utilizzo di RegEx per sostituire i caratteri non validi
- 13. trovare e sostituire parole intere in vim
- 14. Come sostituire lookahead in regex?
- 15. Come posso rilevare caratteri non stampabili in .NET?
- 16. Rimuovi caratteri utf8 non stampabili eccetto controlchars da String
- 17. Rimuovi caratteri non stampabili C# multilingua
- 18. Regex per trovare caratteri speciali in Java
- 19. Come posso sostituire i caratteri speciali con regex in javascript?
- 20. Aggiunta di caratteri non stampabili a una stringa in Java?
- 21. Rimozione di caratteri "gremlin" non stampabili da file di testo
- 22. Java regex lookahead negativo per sostituire i caratteri non tripli
- 23. Match foo o bar vim regex
- 24. Come trovare e sostituire con regex in excel
- 25. testo Sublime regex trovare e sostituire
- 26. Corrispondenza caratteri non stampabili/non ascii e rimozione dal testo
- 27. regex come sostituire i collegamenti di twitter
- 28. stringa regex sostituire
- 29. Come sostituire '& =' con '= &' in Vim?
- 30. Regex sostituire tutti i caratteri di nuova riga con virgola
È inoltre possibile utilizzare Ctrl-Q. Questo è utile per alcuni utenti che eseguono il mapping di Ctrl-V alle operazioni negli appunti –