Saltar al contenido

Extraer columna usando grep

Solución:

Necesitas usar awk:

awk '{print $1,$3}' <namefile>

Este sencillo comando permite imprimir la primera ($ 1) y la tercera ($ 3) columna del archivo. El software awk es mucho más poderoso. Creo que deberías echar un vistazo a la página de manual de awk.

Una buena combinación es usar grep y awk con una tubería. El siguiente código imprimirá las columnas 1 y 3 de solo las líneas de su archivo que contienen ‘p1’:

grep 'p1' <namefile> | awk '{print $1,$3}'

Si, en cambio, desea seleccionar líneas por número de línea, puede reemplazar grep con sed:

sed 1p <namefile> | awk '{print $1,$3}'

En realidad, awk se puede usar solo en todos los ejemplos:

awk '/p1/{print $1,$3}' <namefile> # will print only lines containing p1
awk '{if(NR == 1){print $1,$3}}' <namefile> # Will print only first line

Primero averigüe el comando para encontrar el número de columna.

columnname=C
sed -n "1 s/${columnname}.*//p" datafile | sed 's/[^t*]//g' | wc -c

Una vez que sepa el número, use cortar

cut -f1,3 < datafile 

Combinar en un solo comando

cut -f1,$(sed -n "1 s/${columnname}.*//p" datafile | 
   sed 's/[^t*]//g' | wc -c) < datafile

¿Finalizado? No, deberías mejorar el primero sed comando cuando un encabezado puede ser una subcadena de otro encabezado: incluya pestañas en su coincidencia y vuelva a colocar las pestañas en la cadena de reemplazo.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *