【Linux】ファイルの中身を表示するコマンド一覧-cat/less/nl/head/tail/sort/uniq/cut

この記事からわかること

  • Linuxファイル中身表示するコマンド
  • cat/less/nl/head/tail/sort/uniq/cut/viコマンドの特徴注意点

index

[open]

\ アプリをリリースしました /

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

ファイルの中身を表示するコマンド一覧

コマンドライン(CUI)操作でファイルの中身を確認するコマンドをまとめていきます。

ファイル表示コマンドの種類と特徴

これらのコマンドの引数に指定するのはカレントディレクトリ配下に該当ファイルがある場合はファイル名のみ記述します。別階層のファイルは絶対パスや相対パスで指定することも可能です。

catコマンドの使い方

$ cat ファイル1 [ファイル2]

catコマンドはファイルの中身を全て表示するコマンドです。catはconCATenate(:連結)の略称です。引数に指定されたファイル名(パス)の中身を表示し、複数のファイルを指定された場合は連結して表示させることができることからこの名称になっています。

$ cat sample.txt
これはサンプルテキストです。

複数のファイルを指定する

$ cat sample.txt index.html
これはサンプルテキストです。
<!DOCTYPE html>
<html lang="ja">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

コマンドラインの表示領域より中身の場合が大きいとテキストファイルの一番下側まで自動でスクロールされた状態になります。上記は例として上側を表示しましたが、実際は以下のようになります。

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
  </body>

</html>
プロンプト $ // 次のコマンドを入力待ちの状態

オプション

オプション 役割 同意のコマンド
-n 行に番号を振る(空白行にも振る) nl -b a
-b 行に番号を振る(空白行には振らない) nl (-b t)

lessコマンドの使い方

$ less ファイル1

lessコマンドはファイルの中身をページャ機能を使って表示するコマンドです。ページャ機能とはページ形式に展開する機能でコマンドを入力することで表示部分を切り替えることができるようになります。

$ less index.html
<!DOCTYPE html>
<html lang="ja">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <p>test</p>
    <p>test</p>
    <p>test</p>
:

一番下に:が表示されマウスによるスクロールやキーなどで表示部分を操作できます。最後まで表示すると:(END)にかわります。画面を閉じるときはqキーを押して終了できます。

キー 役割
↑キー 1行上にスクロール
↓キー 1行下にスクロール
Space(空白)キー 1ページ下にスクロール
Ctrl + b キー 1ページ上にスクロール
q 終了

パイプを使った複数コマンド

lessコマンドはコマンドを複数列挙できる|(パイプ)と併用して使われることが多いです。

コマンドが長めの結果を表示する際に| lessとすることで見やすくすることができるようになります。

$ composer -v | less 
   ______
  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/
Composer version 2.1.12 2021-11-09 16:02:04

Usage:
  command [options] [arguments]

Options:
  -h, --help                     Display this help message
  -q, --quiet                    Do not output any message
  -V, --version                  Display this application version
      --ansi                     Force ANSI output
      --no-ansi                  Disable ANSI output
:

nlコマンドの使い方

$ nl ファイル名

headコマンドはファイルの中身に行番号をつけて表示できるコマンドです。空白列はカウントされないので注意してください。

$ nl index.html
1	<!DOCTYPE html>
2	<html lang="ja">
  
3	<head>
4	    <meta charset="UTF-8">
5	    <meta http-equiv="X-UA-Compatible" content="IE=edge">
6	    <meta name="viewport" content="width=device-width, initial-scale=1.0">
7	    <title>Document</title>
8	</head>
  
9	<body>
10    <p>test</p>
11    <p>test</p>
12    <p>test</p>  
13    <p>test</p>
14    <p>test</p>
15  </body>
  
16	</html>

オプション

オプション 役割
-b 行番号の形式を指定する
-h ヘッダに行番号の形式を指定する
-f フッタに行番号の形式を指定する
形式 役割
a 空白行も含む全ての行
t 空白行以外の行
n 行番号を付与しない

headコマンドの使い方

$ head [-行数] ファイル名

headコマンドはファイルの中身の先頭だけを表示できるコマンドです。デフォルトは先頭10行ですがオプションとして行数を指定することが可能です。空白行も含んだ行数になっている点に注意してください。

$ head -6 index.html
<!DOCTYPE html>
<html lang="ja">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">

オプション

オプション 役割
-行数 指定した行数を抜き出す
-n 行数 指定した行数を抜き出す(-行数と同義)
-c バイト数 指定したバイト数を抜き出す

tailコマンドの使い方

$ tail [-行数] ファイル名

tailコマンドはファイルの中身の末尾だけを表示できるコマンドです。headコマンドと同じくデフォルトは末尾10行ですがオプションとして行数を指定することが可能です。

$ tail -6 index.html
    <p>test</p>
    <p>test</p>
    <p>test</p>
</body>

</html>

ファイルの真ん中だけを抜き出す

headコマンドとtailコマンドを|(パイプ)を使って使用することでファイルの真ん中(例:6行〜10行目)を抜き出すと言ったことも可能になります。

$ head -10 index.html | tail -5
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

最初にheadコマンドで先頭10行を切り出しパイプで繋げたtailコマンドでその10行から末尾5行を取り出すといった方法です。

sortコマンドの使い方

$ sort [オプション] ファイル名

sortコマンドはファイルの中身を並び替えて表示できるコマンドです。デフォルトは昇順に並び替えられるので降順にしたい場合はオプションで-rを指定します。

中身の行単位で並び替えが可能で、先頭1文字目の値をキーにソートを行います。例えば文字列のみの場合は以下のようになります。

$ sort index.html



    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <p>test</p>
    <p>test</p>
    <p>test</p>
    <p>test</p>
    <p>test</p>
    <title>Document</title>
<!DOCTYPE html>
</body>
</head>
</html>
<body>
<head>
<html lang="ja">

空白行が一番上に、あとは記号とアルファベットの並び順に並び替えられます。

先頭文字が数値の場合

先頭1文字目が数字の場合だとよりわかりやすい並び替えが可能です。しかし1文字目がキーになっているので2桁などの場合は正しく動作しないので注意してください。

$ sort sample.txt
10:kumori
1:ame
20:hyou
2:hare
32:taihu
33:kaminari
7:yuki
8:arare

複数桁の数値とする

複数桁の数値として認識させるにはオプションで-nを指定します。

$ sort -n sample.txt
1:ame
2:hare
7:yuki
8:arare
10:kumori
20:hyou
32:taihu
33:kaminari

sortのオプション一覧

オプション 役割
-b (--ignore-leading-blanks) 行頭の空白を無視
-f (--ignore-case) 大文字小文字を区別しない
-r (--reverse) 降順
-t (--field-separator) 項目の区切りを指定
-k (--key) キーを指定
-n (--numeric-sort) 数値として認識

区切り文字はカンマで4番目のフィールドを基準に数値として昇順にソート

sort -k 4 -n -t , file

uniqコマンド

$ uniq [オプション] [入力ファイル]

sortコマンドと併用して使われることの多いuniqコマンドは重複している行を1行にまとめて表示させるコマンドです。

uniqコマンドは重複している行が並んでいないと(ソートがかかった状態)でないと機能しません。なので先に|(パイプ)を使用してソートをかけておき、その後に重複しているファイルを1行にまとめます。

$ cat sample.txt 
111
222
444
555
222
111

$ cat sample.txt | sort | uniq
111
222
444
555

オプション:-d 重複している行のみ出力

$ cat sample.txt | sort | uniq -d
111
222

オプション:-u 重複していない行のみ出力

$ cat sample.txt | sort | uniq -u
444
555

cutコマンド

$ cut [オプション] ファイル名

cutコマンドはファイルの中身を指定した区切り文字ごとに抜き出せるコマンドです。特定の区切り文字で区切られた項目を「フィールド」と呼び指定した第n番目のフィールドを抜き出すことができます。

区切り文字はオプション-dで指定し、取り出したいフィールドはオプション-fで指定できます。複数フィールド取り出す時はカンマで繋いで指定できます。

$ cut -d: -f2 sample.txt     
ame
hare
yuki
arare
hyou
kumori
kaminari
taihu

このコマンドはファイルの中身が特定のフォーマットである場合に利用できます。しかし区切り文字として使用できるのは1文字までなので少し複雑なフォーマット(JSONなど)だと扱いにくいかもしれません。

括弧や文字などを区切り文字に指定する場合は""(ダブルクォーテーション)で囲みます。

$ cut -d"a" -f2 sample.txt

$ cut -d"am" -f2 sample.txt 
cut: bad delimiter  // エラーになる

各行から文字位置を指定して取り出す(-c)

$ cut -c 3 sample.txt
a
h
y
a
:
:
:
:

viコマンドの使い方

$ vi ファイル名

viコマンドはファイルの中身を編集モードで表示できるコマンドです。vi(Vim)エディタと呼ばれる特殊な編集エディタとしてファイルの中身を表示させ、実際にコマンドライン上から編集、保存が可能です。

$ vi index.html
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
  <body>
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜  
  </body>
</html>
~
~
~

viエディタにはコマンドモードとインサートモードの2つがあり、デフォルトはコマンドモードになっています。iキーを押すとインサートモードに切り替わり一番下に-- INSERT --と表示されます。

コマンドモードは理解しないと使えませんがインサートモードではメモ帳などを扱うように編集できます。

$ vi ファイル

$ i //インサートモードへ

編集

$ ESCキー // コマンドモードへ

$ :wq // 保存して終了

より詳しい使い方はこちらの記事を参考にしてください。

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。

ご覧いただきありがとうございました。

searchbox

スポンサー

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑
今はCMSを使わずこのサイトを完全自作でサイト運営中〜

New Article

index