파일에서 줄 번호가 있는 줄을 읽고 인쇄하는 프로그램을 작성하세요.

파일에서 줄 번호가 있는 줄을 읽고 인쇄하는 프로그램을 작성하세요.

파일에서 줄을 읽은 다음 해당 줄을 출력하는 프로그램을 작성해야 합니다.

따라서 이러한 파일에는 다음 내용이 포함됩니다.

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

This was a blank line

출력은 다음과 같아야 합니다.

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

나는 내가 할 수 있는 일을 안다:

nl -b a tst16

하지만 숫자를 추가한 후에는 "."이 인쇄되지 않습니다. 루프 같은 방법이 있는지 궁금합니다.

답변1

짧은 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

확장:

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

답변2

awk를 사용하면 충분합니다.

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

$1은 입력의 텍스트 문자열이고 NR은 현재 줄 번호(예: 레코드 수)를 추적하는 내부 awk 변수입니다.

8개의 강력한 awk 내장 변수 – FS, OFS, RS, ORS, NR, NF, FILENAME, FNR

답변3

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

관련 정보