GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo encontrar el último campo usando 'cortar'

¿Sin awk?... Pero es tan simple con awk:

echo 'maps.google.com' | awk -F. '{print $NF}'

AWK es una herramienta mucho más poderosa para tener en su bolsillo. -F si para el separador de campoNF es el número de campos (también representa el índice del último)


Podrías intentar algo como esto:

echo 'maps.google.com' | rev | cut -d'.' -f 1 | rev

Explicación

  • rev invierte "maps.google.com" para que sea moc.elgoog.spam
  • cut utiliza un punto (es decir, '.') como delimitador y elige el primer campo, que es moc
  • por último, lo invertimos de nuevo para obtener com

No es posible usar solo cut . Aquí hay una forma de usar grep :

grep -o '[^,]*$'

Reemplace la coma por otros delimitadores.

Explicación:

  • -o (--only-matching ) solo genera la parte de la entrada que coincide con el patrón (el valor predeterminado es imprimir la línea completa si contiene una coincidencia).
  • [^,] es una clase de carácter que coincide con cualquier carácter que no sea una coma.
  • * coincide con el patrón anterior cero o más veces, por lo que [^,]* coincide con cero o más caracteres que no sean comas.
  • $ coincide con el final de la cadena.
  • Juntando esto, el patrón coincide con cero o más caracteres que no sean comas al final de la cadena.
  • Cuando hay varias coincidencias posibles, grep prefiere el que empieza antes. Entonces todo el último campo coincidirá.

Ejemplo completo:

Si tenemos un archivo llamado data.csv que contiene

one,two,three
foo,bar

entonces grep -o '[^,]*$' < data.csv saldrá

three
bar

Utilice una expansión de parámetros. Esto es mucho más eficiente que cualquier tipo de comando externo, cut (o grep ) incluido.

data=foo,bar,baz,qux
last=${data##*,}

Consulte BashFAQ #100 para obtener una introducción a la manipulación de cadenas nativas en bash.


Linux
  1. ¿Cómo cambiar el nombre de varios archivos usando Buscar?

  2. ¿Cómo encuentro el tamaño máximo de pila?

  3. Cómo canalizar los resultados de 'buscar' a mv en Linux

  4. ¿Cómo puedo contar la cantidad de carpetas en una unidad usando Linux?

  5. ¿Cómo encuentro el UUID de un sistema de archivos?

Cómo encontrar la versión de Redhat Linux instalada

Cómo encontrar archivos usando la línea de comandos en la terminal de Linux

Cómo encontrar el número de puerto de un servicio en Linux

Cómo encontrar la dirección IP de una máquina virtual KVM

Cómo encontrar los últimos usuarios que iniciaron sesión en Linux

Cómo encontrar el último inicio de sesión en Linux