파일에서 줄을 세다 것입니다. 텍스트 파일에서 줄 수를 계산하는

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

$ <cmd> file.txt
1020 lines


답변

표준 방법은 with로 wc계산할 대상 (바이트, 문자, 단어 등)을 지정하는 인수를 사용합니다. -l라인입니다 :

$ wc -l file.txt
1020 file.txt

답변

마이클이 말했듯 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

답변

스티븐 디는 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

답변

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

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

설명 : 루프는 표준 입력을 한 줄씩 읽습니다 ( read; 우리는 읽기 입력으로 아무 것도 수행하지 않기 때문에 변수를 저장할 변수가 제공되지 않습니다) count. 매번 변수가 증가합니다 . 방향 전환 ( <file.txtafter done) 으로 인해 루프의 표준 입력은입니다 file.txt.


답변

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

grep -c "^" file.txt

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