38
28

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ファイル行数のみを "wc -l" で取りたければ cat するのが簡単?

Last updated at Posted at 2017-04-23

ファイルの行数を知るに wc を使っています。
たとえば、a.txt という3行のファイルがあるとします。

a.txt
a
b
c

wc -l を使うと「行数」とともに「ファイル名(a.txt)」も出力されます。

$ wc -l a.txt 
3 a.txt

ここで、シェルスクリプトで行数だけを数字としてとりたい場合を考えます。
明らかに "a.txt" は邪魔です。

この対策として、一度、cat にかませて、その出力をパイプで wc -l に与えます。

$ cat a.txt | wc -l 
3

数字だけ取れました (^o^)V

他に考えられる方法としては、cut を使うとか。

$ wc -l a.txt | cut -d " " -f 1
3

awk を使っても数字だけをとりだせます。

$ wc -l a.txt | awk '{print $1}'
3

wc 以外に使うコマンドとして、
 cat, cut, awk のどれがいいですか?
という選択になるわけですが、cat が最も単純だからよいかと思います。

しかし、「単純とは何か?」と考えなおして、実行形式のサイズが小さいことだろうと踏んで、手元のシステム(Ubuntu 16.04.2 LTS)で調べてみました。

$ ls -l /bin/cat /usr/bin/cut /usr/bin/mawk
-rwxr-xr-x 1 root root  52080  2月 18  2016 /bin/cat
-rwxr-xr-x 1 root root  39728  2月 18  2016 /usr/bin/cut
-rwxr-xr-x 1 root root 117768  3月 24  2014 /usr/bin/mawk

(補足) awk はリンクをたどると /usr/bin/mawk が実体でした。

"cut" が最も小さいので、最も単純で良いのだろうか…
素人なのでこれ以上は分かりません m(_ _)m

38
28
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
38
28

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?