it-swarm-ko.tech

파일에서 줄을 세다

이 작업을 수행하는 방법에는 여러 가지가있을 것입니다. 텍스트 파일에서 줄 수를 계산하는 방법은 무엇입니까?

$ <cmd> file.txt
1020 lines
75
Chris Smith

표준 방법은 wc를 사용하여 계산할 항목 (바이트, 문자, 단어 등)을 지정하는 인수를 사용합니다. -l은 행입니다.

$ wc -l file.txt
1020 file.txt
109
Michael Mrozek

마이클이 말했듯이 wc -l가는 길입니다. 그러나 bash, Perl 또는 awk이 (가) wc이 아닌 경우에는 몇 가지 해결책이 더 있습니다.

배쉬 전용

$ LINECT=0; while read -r LINE; do (( LINECT++ )); done < file.txt; echo $LINECT

펄 솔루션

$ Perl -lne 'END { print $. }' file.txt

그리고 훨씬 덜 읽기 쉽습니다.

$ Perl -lne '}{ print $.' file.txt

Awk 솔루션

$  awk 'END {print NR}' file.txt
17
Steven D

스티븐 D는 GNU sed :

sed -n '$=' file.txt

또한 파일 이름을 출력하지 않고 개수를 원하고 wc를 사용하는 경우 :

wc -l < file.txt

그냥 그것을 위해 :

cat -n file.txt | tail -n 1 | cut -f1

사용할 때 경고의 말씀

wc -l

wc -l은\n을 계산하여 작동하기 때문에 파일의 마지막 줄이 줄 바꿈으로 끝나지 않으면 줄 수는 1만큼 줄어 듭니다 (따라서 오래된 규칙은 파일 끝에 줄 바꿈을 남깁니다)

주어진 파일이 줄 바꿈으로 마지막 줄을 끝내는 규칙을 따르는 지 여부를 확신 할 수 없으므로 줄 바꿈과 상관없이 마지막 줄을 포함하는 대체 명령을 사용하는 것이 좋습니다.

sed -n $= filename
Perl -lne 'END { print $. }' filename
awk 'END {print NR}' filename
grep -c '' filename
11
pretzels1337

Bash 만 있고 외부 도구를 사용할 수없는 경우 다음을 수행 할 수도 있습니다.

count=0
while read
do
  ((count=$count+1))
done <file.txt
echo $count

설명 : 루프는 표준 입력을 한 줄씩 읽습니다 (read; 어쨌든 읽기 입력으로 아무 것도 수행하지 않으므로 저장할 변수가 제공되지 않습니다). 매번 변수 count가 증가합니다. . 리디렉션으로 인해 (<file.txtdone) 이후의 루프에 대한 표준 입력은 file.txt.

3
celtschk

다음과 같이 grep 명령을 항상 사용할 수 있습니다.

grep -c "^" file.txt

마지막 행의 끝에 LF 문자가 포함되어 있는지 여부에 관계없이 file.txt의 모든 실제 행을 계산합니다.

2
Paolo