GNU/Linux >> Tutoriales Linux >  >> Linux

¿Eliminar líneas de encabezado adicionales del archivo, excepto la primera línea?

Tengo un archivo que se parece a este ejemplo de juguete. Mi archivo actual tiene 4 millones de líneas, de las cuales debo eliminar unas 10.

ID  Data1  Data2
1    100    100
2    100    200
3    200    100
ID  Data1  Data2
4    100    100
ID  Data1  Data2
5    200    200

Quiero eliminar las líneas que se parecen al encabezado, excepto la primera línea.

Archivo final:

ID  Data1  Data2
1    100    100
2    100    200
3    200    100
4    100    100
5    200    200

¿Cómo puedo hacer esto?

Respuesta aceptada:

header=$(head -n 1 input)
(printf "%sn" "$header";
 grep -vFxe "$header" input
) > output
  1. tomar la línea de encabezado del archivo de entrada en una variable
  2. imprimir el encabezado
  3. procesar el archivo con grep para omitir líneas que coincidan con el encabezado
  4. capture el resultado de los dos pasos anteriores en el archivo de salida

Linux
  1. Uso de Google Drive desde la línea de comandos de Linux

  2. ¿Concatenar líneas basadas en el primer carácter de la siguiente línea?

  3. Bash Script para eliminar el archivo más antiguo de una carpeta?

  4. ¿Cómo eliminar las líneas que aparecen en el archivo B de otro archivo A?

  5. Eliminar líneas pares o impares de un archivo de texto

Cómo quitar líneas de un archivo usando el comando Sed

¿Cómo quitar el Bom de un archivo Utf-8?

Imprima un archivo, omitiendo las primeras líneas X, en Bash

Imprimir la última línea de un archivo, desde la CLI

Eliminar las primeras N líneas de un archivo de registro activo

Bash script para eliminar el archivo más antiguo de una carpeta