Utilizo Linux y FreeBSD (específicamente, utilizo Debian Linux y PC-BSD), y encontré algo extraño sed.
Con frecuencia necesito convertir archivos de "valores separados por tabulaciones" a "valores separados por comas". La forma más simple que conozco es usar sed, así:
sed 's/\t/,/g' inputFile.txt > outputFile.csv
Esto funciona perfectamente en Linux: reemplaza cada pestaña con una coma ... pero en FreeBSD, ¡no reemplaza nada!
¿Me estoy perdiendo de algo? ¿Existe una sintaxis con FreeBSD sedque sea diferente a la de Linux?

-Eopción hace el truco (tanto en FreeBSD como en Mac OS X).Sí, hay varias diferencias, el comportamiento de
-iser el único que conozco fuera de mi cabeza.Nunca he usado BSD, así que realmente no puedo ayudar con los detalles, pero podría ser una solución alternativa en su
trlugar:Un efecto secundario agradable es que
trdebería ser significativamente más rápido. Probé eso en mi Linux usando un archivo de prueba con 50000 líneas, cada una de las cuales tenía 2 pestañas:fuente
tr '\t' ,Es más portátil quetr $'\t' ,.tr '[\t]' '[,]'incluso sería portátil para algunos viejos sistemas SysV.cut. La especificación POSIX paratrestá ahí . Me equivoqué sobre lo[necesario para el viejo SysV. Como señala la especificación POSIX,[solo es necesario para los rangos allí.Sí, a diferencia de GNU
sedFreeBSDsedno interpreta las secuencias de escape ANSI C como\ten las expresiones regulares.Una forma de obtener un denominador menos común en este caso es usar
printf.El comportamiento de las
sed -iediciones de archivos in situ puede hacerse compatible si un interruptor u opción sigue inmediatamente al-iinterruptor, por ejemplo,sed -i -e 's/x/X/g' filefunciona tanto para GNUsedcomo para FreeBSDsed.Las versiones recientes de FreeBSD
sed(FreeBSD 8.1 o más reciente) tienen el-rinterruptor para aumentar la compatibilidad con GNUsed.(Además, el uso de clases de caracteres POSIX en
sedexpresiones regulares también es una buena manera de garantizar la compatibilidad).Para ver una
sedimplementación alternativa conforme a POSIX, consulte: minised: una implementación SED más pequeña, más barata y más rápida .fuente
Debe usar un TABcarácter literal en lugar de
\t:Vea este comentario de Stephane sobre otra pregunta.
El siguiente artículo también puede interesarle:
Cito la parte relevante:
fuente
Después de iniciar sesión, veo el próximo anuncio y lo guardo. Espero que sea útil para otros también
fuente
-iopción ya estaba cubierta