이 작업을 수행하는 방법에는 여러 가지가있을 것입니다. 텍스트 파일에서 줄 수를 계산하는 방법은 무엇입니까?
$ <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.txt
after done
) 으로 인해 루프의 표준 입력은입니다 file.txt
.
답변
grep
다음과 같이 항상 명령 을 사용할 수 있습니다 .
grep -c "^" file.txt
file.txt
마지막 행의 끝에 LF 문자가 포함되어 있는지 여부에 관계없이 의 모든 실제 행을 계산합니다 .