여러 파일의 행 수를 알고 싶어서 명령으로 얻어 보았습니다.

코딩하는 경우,,,

모두 등 정도의 크기의 파일 작성하고 있는 것일까?
기존 파일은 얼마나 큰가?
각 파일의 행 수를 알고 싶습니다.

있다고 생각합니다.

공부도 겸해, 커맨드로 취득해 보기로 했습니다!

실행 환경



windows10에 WSL을 이용하여 Linux(Ubuntu)를 설치해 명령했습니다.

행 취득



wc 명령 사용
다음과 같이
wc 대상 파일이라고 기재하면
$ wc *.txt
 13  13  38 t01.txt
 38  33 106 t02.txt
  4   3   7 t03.txt
 21  18  43 t04.txt
 75  33 116 t05Service.txt
 18  16  35 t06Service.txt
148  14 171 t07Service.txt
317 130 516 total

현재 디렉토리에 존재하는 txt 파일의 정보를 얻을 수 있습니다.
획득한 정보는 항목별로 표시됩니다.
行数 単語数 ファイル容量(バイト数)   ファイル名称
13   13     38                t01.txt
...
...
317 130   516      total ここは合計

이 상태로 여분의 정보가 많기 때문에
-l 옵션으로 행 수만 취득
~/work$ wc *.txt -l
 13 t01.txt
 38 t02.txt
  4 t03.txt
 21 t04.txt
 75 t05Service.txt
 18 t06Service.txt
148 t07Service.txt
317 total

행수와 파일명만이므로 상당히 보기 쉬워졌습니다.

행 수순으로 표시.



wc 명령 파이프 '|' sort 명령을 사용했습니다.
$ wc *.txt -l | sort
  4 t03.txt
 13 t01.txt
 18 t06Service.txt
 21 t04.txt
 38 t02.txt
 75 t05Service.txt
148 t07Service.txt
317 total

좋은 느낌으로 파일 행수순으로 늘어놓았습니다.

다음은 「***Service.txt」파일만 취득해 보겠습니다.
$  wc *Service.txt -l | sort
 18 t06Service.txt
 75 t05Service.txt
148 t07Service.txt
241 total

했어! 서비스 파일의 행 수만 검색할 수 있습니다.

...

이번에는 평균 표시!



우선 TOTAL의 행이 방해이므로 삭제합니다.

sed 명령을 사용했습니다.
이것은 주소부에 $를 지정하면 마지막 행을 나타내므로 그에 대해 d(삭제)를 실행합니다.
$ wc *.txt -l | sort | sed '$d'
  4 t03.txt
 13 t01.txt
 18 t06Service.txt
 21 t04.txt
 38 t02.txt
 75 t05Service.txt
148 t07Service.txt

사라졌습니다!
또한
awk 명령으로 평균을 표시합니다.
$ wc *.txt -l | sort | sed '$d' |  awk '{n += $1}{i +=1 }; END{print int(n/i) }'
45

상기의 커멘드로부터 평균행수 「45」를 취득할 수 있었습니다! !

덧붙여서 awk가 무엇을 하고 있는가 하면. . .
   1行毎に 行数をnにプラス  iに+1     全行終わったら   表示  少数点切り捨て(n÷i)
awk       '{n += $1}  {i +=1 };   END       {print  int(n/i) }'

같은 느낌입니다.

wc 명령의 옵션은 다음과 같습니다.


-l
ファイルの行数を表示する。

-c
ファイルのバイト数を表示する。

-m
ファイルの文字数を表示する。

-L
最も長い行のバイト数を表示する。

-w
ファイルの単語数を表示する。

사용하지 않았지만 다음과 같은 명령으로 파일 수를 확인할 수있는 것 같습니다.


$ ls -1 | wc -l

lsコマンドのオプションは「-1(数字の1)」
wcコマンドのオプションは「l(アルファベットのLの小文字)」

참고
텍스트의 마지막 줄만 지우고 싶을 때, 어떻게 하면 좋을까?

awk 정보

좋은 웹페이지 즐겨찾기