파일에서 줄을 읽은 다음 해당 줄을 출력하는 프로그램을 작성해야 합니다.
따라서 이러한 파일에는 다음 내용이 포함됩니다.
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 변수입니다.
답변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