Quiero reemplazar TAB
s en stdout
con punto y coma, ejecutando sed
desde el shell ZSH.sed replace literal TAB
Entiendo uno puede normalmente (en otras conchas?) Utilizar:
somecommand | sed 's/\t/;/g'
Sin embargo, esto no funciona para mí en ZSH-shell en FreeBSD. El \t
no coincide con los tabuladores. ¿Por qué es esto? También intenté varias barras invertidas (hasta 5).
Esto funciona:
somecommand | sed 's/[TAB]/;/g'
, donde [TAB]
es un TAB
-character real, insertada mediante la introducción de Ctrl-V
seguido del botón TAB
en mi teclado.
¡Gracias, eso realmente me solucionó las cosas! – poplitea
@poplitea Si su script solo se ejecuta en ksh93, bash o zsh (a diferencia de otras variantes sh como pdksh, Bourne o ash), entonces puede usar '$ 's/\ t /; /' g' donde el shell realiza la expansión de barra invertida y 'sed' ve un carácter de tabulación literal. – Gilles
@Gilles: ¡Fantástico! Sabía de $(), pero no de $ '' sustitución. Muchas gracias, esto hace que sea más fácil resolver mi problema. Sin embargo, probablemente debiste poner esto en una respuesta en lugar de un comentario (?). – poplitea