Como posso adicionar uma linha inteira incremental em um arquivo de texto usando o comando grep ou awk no terminal Linux?

Como posso adicionar uma linha inteira incremental em um arquivo de texto usando o comando grep ou awk no terminal Linux?

Eu tenho um arquivo de texto que contém mais de 10 milhões de linhas. O arquivo se parece com abaixo:

1902400023
1902400029
1902400031
1902400032

Eu queria adicionar um título, um número de ID incremental e um SHORTCODE constante. Esperando resultado:

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

E isso continuará até o final do arquivo e escreverá em outro arquivo.

Responder1

Eu acho que você precisa de um awkcódigo como segue

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

Na BEGINcláusula, definimos o separador do campo de saída para o ,operador e inicializamos a string do cabeçalho. Quando o arquivo é processado, na primeira linha inserimos o cabeçalho e nas linhas subsequentes inserimos as linhas conforme mostrado no OP. NRé uma variável especial no contexto awkque rastreia o número da linha que usamos para seu contador incremental.

Responder2

Aqui você pode usar o comando awk como abaixo para adicionar números de linha:

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

informação relacionada