【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コマンド:複数のファイルを連結して表示
- lessコマンド:ページャ機能で表示
- nlコマンド:ファイルに行番号をつけて表示
- headコマンド:ファイルの先頭X行を表示
- tailコマンド:ファイルの末尾X行を表示
- sortコマンド:ファイルの中身をソートして表示
- uniqコマンド:重複している行をまとめて表示
- cutコマンド:ファイルの中身を区切り文字単位で抜き出して表示
- viコマンド:編集できる状態で表示
これらのコマンドの引数に指定するのはカレントディレクトリ配下に該当ファイルがある場合はファイル名のみ記述します。別階層のファイルは絶対パスや相対パスで指定することも可能です。
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 // 保存して終了
より詳しい使い方はこちらの記事を参考にしてください。
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。
おすすめ記事:Linuxの資格
LPIC試験の申し込み方法と学習ロードマップ(レベル1:101/102)