Modificando o conteúdo do texto com base na operação no número da linha

0

Digamos que eu tenha esses dados em um arquivo de texto:

line1 
line2 
line3
line4
line5
...

Eu quero alterar este arquivo de texto com base em um padrão usando o número da linha, por exemplo número da linha mod 3, conteúdo da linha:

1,line1
2,line2
3,line3
1,line4
2,line5
...

Como posso conseguir isso (de preferência usando sed)?

    
por Zeruno 04.03.2017 / 18:44

1 resposta

1

Isso é difícil de fazer em sed porque falta aritmética. No entanto, existem algumas maneiras de fazer isso com awk :

awk '{ printf "%d, %s\n", (linenum++ % 3) + 1, $0 }' lines.txt

ou

awk '{ print (linenum++ % 3) + 1 ", " $0 }' lines.txt

Em ambos os casos, linenum está sendo usado para contar as linhas, então a operação do módulo é usada para calcular o restante da contagem de linhas dividida por 3. O 1 é adicionado para obter o esquema de numeração que você solicitou.

printf fornece um pouco de "visual" para o programa.

Veja man awk para detalhes e outras opções.

    
por 04.03.2017 / 19:17

Tags