El término "campo" a menudo se asocia con herramientas como cut
y awk
. Un campo sería similar a una columna de datos, si toma los datos y los separa con un carácter específico. Por lo general, el personaje utilizado para hacer esto es a Space.
Sin embargo, como es el caso con la mayoría de las herramientas, es configurable. Por ejemplo:
- awk =
awk -F"," ...
- se separaría por comas (es decir ,).
- cut =
cut -d"," ...
- se separaría por comas (es decir ,).
Ejemplos
Este primero muestra cómo awk
se dividirá automáticamente en los espacios.
$ echo "The rain in Spain." | awk '{print $1" "$4}'
The Spain.
Este muestra cómo cut
se dividirá en espacios también.
$ echo "The rain in Spain." | cut -d" " -f1,4
The Spain.
Aquí tenemos una lista CSV de datos de columna que estamos utilizando cut
para devolver las columnas 1 y 4.
$ echo "col1,col2,col3,co4" | cut -d"," -f1,4
col1,co4
Awk también puede hacer esto:
$ echo "col1,col2,col3,co4" | awk -F"," '{print $1","$4}'
col1,co4
Awk también es un poco más experto en tratar con una variedad de personajes de separación. Aquí se trata Tabsjunto con Spacesdónde se mezclan al mismo tiempo:
$ echo -e "The\t rain\t\t in Spain." | awk '{print $1" "$4}'
The Spain.
¿Qué pasa con el interruptor -s para cortar?
Con respecto a este interruptor, es simplemente decirle cut
que no imprima ninguna línea que no contenga el carácter delimitador especificado a través del -d
interruptor.
Ejemplo
Digamos que teníamos este archivo.
$ cat sample.txt
This is a space string.
This is a space and tab string.
Thisstringcontainsneither.
NOTA: Hay espacios y pestañas en la segunda cadena de arriba.
Ahora cuando procesamos estas cadenas usando cut
con y sin el -s
interruptor:
$ cut -d" " -f1-6 sample.txt
This is a space string.
This is a space
Thisstringcontainsneither.
$ cut -d" " -f1-6 -s sample.txt
This is a space string.
This is a space
En el segundo ejemplo se puede ver que el -s
interruptor ha omitido ningún tipo de condiciones de la salida que no contienen el delimitador, Space.
echo '$IFS' | cat -vet
para ver cómo se ve el valor predeterminado enshell
.cut
cuál fue la pregunta formulada.cut -d "$IFS"
será un error, mientras queawk -F"[ \t\n]"
funciona como se esperaba