Voglio rimuovere tutti i caratteri di controllo "^ A" da un file utilizzando SED. Posso rimuovere tutti i caratteri di controllo usando 'sed s/[[: cntrl:]] // g', ma come posso specificare "^ A" in modo specifico?Come rimuovere i caratteri CTRL-A dai file usando SED?
7
A
risposta
10
per riprodurre "^ A" è sufficiente premere Ctrl-V Ctrl-a ciò riprodurre il^A nel file
sed -i -e 's/^A/BLAH/g' testfile
il ^A
in quella linea è il risultato di me premendo Ctrl-v Ctrl- un
9
^a è byte 1 o \x01
così si dovrebbe essere in grado di fare questo:
sed 's/\x01//g'
Tenete a mente che per le modifiche a byte singolo, "tr" è più veloce di sed, anche se dovrete usare la sintassi $'..'
di bash per dargli un byte 0x01:
tr -d $'\x01'
Vorrei raccomandare contro questo modo, perché non sarà in grado di copiare facilmente e incollarlo, messo in uno script, modificare lo script con qualsiasi editor e così via. – Tobia
@Tobia È possibile eseguire ctrl-v ctrl-a in vi e salvare il file con il corretto^A in là. Copia e incolla con il buffer di incolla della GUI è l'unica cosa che non puoi fare. – Eric