¿Cómo puedo agregar una fila de enteros incrementales en un archivo de texto usando el comando grep o awk en la terminal de Linux?

¿Cómo puedo agregar una fila de enteros incrementales en un archivo de texto usando el comando grep o awk en la terminal de Linux?

Tengo un archivo de texto que contiene más de 10 millones de líneas. El archivo se ve así:

1902400023
1902400029
1902400031
1902400032

Quería agregar un encabezado, un número de identificación incremental y un CÓDIGO CORTO constante. Esperando resultado:

ID,MSISDN,SHORTCODE
1,1902400023,1
2,1902400029,1
3,1902400031,1
4,1902400032,1

Y esto continuará hasta el final del archivo y escribirá en otro archivo.

Respuesta1

Supongo que necesitas un awkcódigo de la siguiente manera.

awk 'BEGIN { OFS = ","; header="ID,MSISDN,SHORTCODE" } NR == 1 { print header } 
           { $2 = $0; $1 = NR; $3 = 1; }1' file

En la BEGINcláusula, configuramos el separador de campo de salida para el ,operador e inicializamos la cadena del encabezado. Cuando se procesa el archivo, en la primera línea insertamos el encabezado y en las líneas siguientes, insertamos las líneas como se muestra en el OP. NRes una variable especial en el contexto awkque rastrea el número de línea que usamos para su contador incremental.

Respuesta2

Aquí puede usar el comando awk como se muestra a continuación para agregar números de línea:

$ awk '{printf("%d:%s\n", NR, $0)}' millionlinetextfile > linenumberedfile

información relacionada