Ninguno de los dos funciona en Windows (por ejemplo, Git Bash) obviamente. Use la respuesta de @ Mikel allí (el delimitador predeterminado es tab, simplemente omita el -dargumento).
Pero probablemente siempre sea más seguro mencionar dichos indicadores explícitamente, tanto para la legibilidad como para la portabilidad. Me imagino que algunas personas que diseñan un cutpara Windows no seguirían el estándar completo.
@WillemVanOnsem, si alguien escribe una versión de cutWindows y no sigue la especificación POSIX , no hay razón para suponer que cualquier script POSIX funcionará con ese sistema. Apéguese a las características especificadas por POSIX. No intente permitir implementaciones hipotéticas futuras no conformes; eso no es lo que significa "portabilidad".
Comodín
12
awk -F '\t''{ print $2 }' inputfile
Esto extrae el segundo campo delimitado por tabulaciones de cada línea de entrada inputfile.
Más genéricamente, sin requerir caracteres invisibles: se usa trpara convertir los delimitadores a un formato que se pueda especificar más fácilmente cut.
$ echo -e "a\tb\tc"|tr '\t'' '|cut -d' '-f2
b
tr es una herramienta simple, pero poderosa, de coincidencia y reemplazo de personajes.
Pero, ¿y si la entrada es abc(space)def(tab)ghi? Su respuesta cederá def, pero debería ceder ghi. Del mismo modo, si la entrada es ABC(tab)DEF(space)GHI, su respuesta rendirá DEF, pero debería rendir DEF(space)GHI.
G-Man
@ G-Man: El delimitador de espacio fue solo un ejemplo. Utilice el delimitador apropiado para sus datos, por ejemplo, una coma. echo -e "abc\tdef ghi" |tr '\t' ',' |cut -d',' -f2
nobar
... Pero sí, si el delimitador debe ser una pestaña, entonces mi enfoque no funcionará.
Respuestas:
Dos caminos:
Presione Ctrl+ Vy luego Tab.
o escríbelo así:
fuente
-d
argumento).ksh93
, nobash
. Al menos, es compatible con ksh93, zsh, bash, mksh y FreeBSD sh ( podría llegar a la próxima reversión importante de la especificación estándar POSIX parash
).La pestaña es la predeterminada.
Vea la página del manual de corte .
Entonces deberías escribir
fuente
cut
para Windows no seguirían el estándar completo.cut
Windows y no sigue la especificación POSIX , no hay razón para suponer que cualquier script POSIX funcionará con ese sistema. Apéguese a las características especificadas por POSIX. No intente permitir implementaciones hipotéticas futuras no conformes; eso no es lo que significa "portabilidad".Esto extrae el segundo campo delimitado por tabulaciones de cada línea de entrada
inputfile
.fuente
Más genéricamente, sin requerir caracteres invisibles: se usa
tr
para convertir los delimitadores a un formato que se pueda especificar más fácilmentecut
.tr
es una herramienta simple, pero poderosa, de coincidencia y reemplazo de personajes.fuente
abc(space)def(tab)ghi
? Su respuesta cederádef
, pero debería cederghi
. Del mismo modo, si la entrada esABC(tab)DEF(space)GHI
, su respuesta rendiráDEF
, pero debería rendirDEF(space)GHI
.echo -e "abc\tdef ghi" |tr '\t' ',' |cut -d',' -f2