Desidero sostituire TAB
s in stdout
con punto e virgola, eseguendo sed
dalla shell ZSH.sed sostituire il TAB originale
ho capito si può normalmente (in altre shell?) Usa:
somecommand | sed 's/\t/;/g'
Tuttavia, questo non funziona per me in ZSH-shell sotto FreeBSD. Il \t
non corrisponde ai tabulatori. Perchè è questo? Ho anche provato più backslash (fino a 5).
Questo funziona:
somecommand | sed 's/[TAB]/;/g'
, dove [TAB]
è un vero TAB
-CHARACTER, inserita inserendo Ctrl-V
seguito dal pulsante TAB
sulla tastiera.
Grazie, questo ha davvero risolto le cose per me! – poplitea
@poplitea Se il tuo script verrà eseguito solo in ksh93, bash o zsh (al contrario di altre varianti sh come pdksh, Bourne o ash), allora puoi usare '$ 's/\ t /; /' g' dove il shell fa l'espansione di backslash e 'sed' vede un carattere tab letterale. – Gilles
@Gilles: fantastico! Sapevo di $(), ma non di $ '' sostituzione. Grazie mille, questo semplifica la risoluzione del mio problema. Probabilmente dovresti averlo inserito in una risposta piuttosto che in un commento, sebbene (?). – poplitea