이 작업을 수행하는 방법에는 여러 가지가있을 것입니다. 텍스트 파일에서 줄 수를 계산하는 방법은 무엇입니까?
$ <cmd> file.txt
1020 lines
표준 방법은 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 'END {print NR}' file.txt
스티븐 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
Bash 만 있고 외부 도구를 사용할 수없는 경우 다음을 수행 할 수도 있습니다.
count=0
while read
do
((count=$count+1))
done <file.txt
echo $count
설명 : 루프는 표준 입력을 한 줄씩 읽습니다 (read
; 어쨌든 읽기 입력으로 아무 것도 수행하지 않으므로 저장할 변수가 제공되지 않습니다). 매번 변수 count
가 증가합니다. . 리디렉션으로 인해 (<file.txt
done
) 이후의 루프에 대한 표준 입력은 file.txt
.
다음과 같이 grep
명령을 항상 사용할 수 있습니다.
grep -c "^" file.txt
마지막 행의 끝에 LF 문자가 포함되어 있는지 여부에 관계없이 file.txt
의 모든 실제 행을 계산합니다.