Escreva um programa que leia de um arquivo e imprima a linha com o número da linha

2

Eu preciso escrever um programa que leia a linha de um arquivo e, em seguida, imprima as linhas.

Portanto, os arquivos contêm isso:

This is the first line
This is the second line
This is the third line

This was a blank line

A saída deve ser esta:

1. This is the first line
2. This is the second line
3. This is the third line
4.
5. This was a blank line

Eu sei que posso fazer:

nl -b a tst16

Mas isso não imprime o "." após os números mais eu quero saber se existe uma maneira de fazer isso é como um loop ou algo assim.

    
por shawn edward 06.03.2016 / 01:58

3 respostas

2

Usando uma pequena construção while :

% i=1; while IFS= read -r line; do printf '%s. %s\n' "$i" "$line"; ((i++)); done <file.txt

1. This is the first line
2. This is the second line
3. This is the third line
4. 
5. This was a blank line

Expandido:

#!/usr/bin/env bash
i=1
while IFS= read -r line; do 
    printf '%s. %s\n' "$i" "$line"
    ((i++))
done <file.txt
    
por 06.03.2016 / 02:07
0

Usando o awk, basta:

awk ' { print NR". " $1 } ' < file.txt

$ 1 é a cadeia de texto na entrada e NR uma variável interna do awk que rastreia o número da linha atual (por exemplo, Número de Registros).

8 variáveis incorporadas do Awk poderoso - FS, OFS, RS, ORS, NR, NF, NOME DE ARQUIVO, FNR

    
por 06.03.2016 / 09:21
0

Você também pode usar nl -

nl -s. -ba file
     1.This is the first line
     2.This is the second line
     3.This is the third line
     4.
     5.This was a blank line
    
por 06.03.2016 / 15:38

Tags