cat、less、head、tail、split、sedなどLinuxでファイル、文字列を操作するコマンド
2020/08/08
Linuxのファイル、テキスト・文字列を操作するコマンドのまとめ
Linuxのファイル、および、ファイルのテキストを操作するコマンドをまとめて紹介します。
cat、less、head、tail、split、sedなどファイルを操作するコマンド
この記事では、Linuxでファイル操作をする際に使うコマンドをまとめて紹介します。
何となくでもコマンドを知っていれば、そのコマンドを検索すればいいのですが、Linuxでファイルに対してこんな操作をしたいなぁ、と言う場合に最初に眺めてみるようなページとして作成しました。
この記事で紹介するコマンドは以下になります。
【cat】 ファイルの内容を表示する
【tac】 ファイルの内容を最後の行から表示する
【rev】 ファイルの内容を行末から表示する
【nl】 ファイルの内容を行番号を付与して表示する
【more】 ファイルの内容をページ単位で表示する
【less】 ファイルの内容をページ単位で表示する
【head】 ファイルの内容の先頭から指定された行数分を表示する
【tail】 ファイルの内容の最後の行から指定された行数分を表示する
【od】 ファイルの内容を 8進数、16進数で表示する
【split】 ファイルを指定したサイズで分割する
【cut】 ファイルの内容から指定したフィールドを取り出す
【join】 複数ファイルを読み込み共通フィールドを持つ行を連結する
【paste】 複数ファイルを読み込み一致する行を水平方向に連結する
【sort】 ファイルの内容を行単位でフィールドの内容をソートする
【uniq】 テキストの内容の重複している行を 1行にまとめる
【tr】 標準入力された文字列を変換する
【sed】 ファイルの内容をコマンドの処理に従って処理する
【expand】 ファイルの中にあるタブをスペースに変換する
【unexpand】 ファイルの行頭にある連続した空白をタブに変換する
【fmt】 テキストを決められた桁で整形する
【wc】 ファイルの行数、単語数、バイト数をカウントし表示する
【pr】 印刷するときなどにファイルの書式を整形する
基本的な使用例、オプション、および、詳細記事を書いているコマンドはその記事へのリンクを貼っています。
ファイル内容を表示する「cat」コマンド
「cat」コマンドは、ファイルの内容を表示します。
また、複数のファイルを連結します。
catコマンドに関する詳しい解説は下記にあります。
Linuxでファイルの内容を表示するcatコマンドの解説。more、lessで代替も
catコマンドの基本的な使用例
「cat」コマンドの基本的な使用例としては以下のようになります。
パラメータとして指定したファイルの内容を表示します。
1 2 3 |
$ cat file_name1 abcde fghij |
また、下記の様に複数のファイルをスペースで区切って指定することで、指定されたファイル「file_name1」「file_name2」の内容を連結し、リダイレクトを使用してファイル「file_name3」に出力します。
1 |
$ cat file_name1 file_name2 > file_name3 |
「cat」コマンドは「conCATenate(連結する)」から来ていますので、ファイルを連結するこちらの方が本来の機能と言えるでしょう。
catコマンドのオプションについて
「cat」コマンドのオプションとして、行番号を付与する機能、タブ・改行コード・行末などの制御コードの表示・非表示を選択する機能、などがあります。
行番号の付与は、空白行にも付番するか、しないか、の選択も可能です。
ファイルの内容を最後の行から表示する「tac」コマンド
「tac」コマンドは、ファイルの内容を最後の行から表示します。
「cat」コマンドはファイルの先頭から順番に表示しますが、「cat」の逆の「tac」は処理も逆で、ファイルの最後の行から順番に表示します。
tacコマンドに関する詳しい解説は下記にあります。
Linuxのファイル表示・結合catの逆処理のtac、revコマンドの解説
tacコマンドの基本的な使用例
「tac」コマンドの基本的な使用例としては以下のようになります。
1 2 3 4 5 6 |
$ cat file_name1 abcde fghij $ tac file_name1 fghij abcde |
まずはじめに、「cat」コマンドを使い「file_name1」の内容を確認し、その後に「tac」コマンドを実行し、最終行から逆に表示していることを確認しています。
「cat」コマンドと同一の書式でファイルの連結を行うことも出来ます。
1 |
$ tac file_name1 file_name2 > file_name3 |
tacコマンドのオプションについて
「tac」コマンドのオプションとしては、デフォルトでは行の区切りは改行コードですがこれを違うものに差し替える機能や、区切り文字(改行コード)を前に付ける機能などがあります。
ただし、「tac」には「cat」にあるような行番号を付与するオプションはありませんので、下記の様に「cat」、「nl」コマンドなどを「|(パイプ)」でつないで処理を行います。
1 2 |
$ tac file_name1 | cat -n $ tac file_name1 | nl |
ファイルの内容を行末から表示する「rev」コマンド
「rev」コマンドは、ファイルの内容の各行を末尾から逆に表示します。
「tac」コマンドは、最終行から表示しますが、「rev」コマンドは行は先頭から順番に表示しつつ、各行の内容を行の末尾から逆に表示をしていきます。
revコマンドに関する詳しい解説は下記にあります。
Linuxのファイル表示・結合catの逆処理のtac、revコマンドの解説
revコマンドの基本的な使用例
「rev」コマンドの基本的な使用例としては以下のようになります。
1 2 3 4 5 6 |
$ cat file_name1 abcde fghij $ rev file_name1 edcba jihgf |
まずはじめに、「cat」コマンドを使い「file_name1」の内容を確認し、その後に「tac」コマンドを実行し、行の出力順番は変わらず、各行の表示が行末から逆に表示していることを確認しています。
revコマンドのオプションについて
「rev」コマンドのオプションとしては、「バージョンを見る:-V」「ヘルプを見る:-h」はありますが、機能を拡張するようなオプションはありません。
ファイルの内容を行番号を付与して表示する「nl」コマンド
「nl」コマンドは、ファイルの内容を行番号付で表示します。
nlコマンドに関する詳しい解説は下記にあります。
Linuxのnlは行番号を付与してファイルの内容を表示するコマンド
nlコマンドの基本的な使用例
「nl」コマンドの基本的な使用例としては以下のようになります。
ファイルの内容を表示します。
1 2 3 |
$ nl file_name1 1 abcde 2 fghij |
デフォルトでは、空白行には行番号を付与しません。
デフォルトの表示形式をオプションを付けた状態で表現すると以下の表記となります。
1 2 3 4 5 |
$ nl -b t file_name1 1 abcde 2 fghij 3 klmno |
「-b」オプションは行番号を付与するスタイルを指定するオプションで、「t」は空行以外に行番号を付与するスタイルです。
その他のスタイルは、「a」はすべての行に対して行番号を付与するスタイルで、「n」は行番号を表示しないスタイルです。
また、catコマンドで同等の表示するときは以下の表記となります。
1 |
$ cat -b file_name1 |
また、空白行にも行番号を付与したい場合は下記の様に記述します。
1 2 |
$ nl -b a file_name7 $ cat -n file_name1 |
nlコマンドのオプションについて
「nl」コマンドのオプションとしては、「-b」オプションのほか、表示する行番号の表記の桁数を指定する機能、行番号の増分を指定する機能、ファイルのヘッダーやフッターに行番号を付与する機能などがあります。
ちなみに、「nl」コマンドには、よく似た「ln」コマンドがありますが、「ln」コマンドは「link」の略で、ハードリンク、シンボリックリンクを設定する際に使用するコマンドです。
ファイルの内容をページ単位で表示する「more」コマンド
「more」コマンドは、ファイルの内容をページャー機能付で表示します。
「more」コマンドに関する詳しい解説は下記にあります。
less、moreはページャー、ファイルの中身を表示するLinuxのコマンド
Linuxでファイルの内容を表示するcatコマンドの解説。more、lessで代替も
moreコマンドの基本的な使用例
「more」コマンドの基本的な使用例としては以下のようになります。
1 |
$ more /var/log/boot.log |
コマンドを実行すると画面が切り替わり、下記の画面が表示されます。
「more」コマンドはページャーとして他のコマンドと組み合わせてコマンドの実行結果を画面単位で表示するために使うことがよくあります。
1 |
$ cat /var/log/boot.log | more |
例えば、上記の様に「cat」と組み合わせて使いますが、「more」は単独でファイルの内容を表示する機能を持っていますので、ファイルの内容を表示する場合は上記ように「more」コマンドだけで足りるのです。
moreコマンドのオプションについて
「more」コマンドのオプションとしては、指定した行数から表示する機能や、連続した空行を 1行にまとめる機能、改ページを無視する機能などがあります。
また、表示された画面の操作、行を進めたり、ページを進めたり、戻ったりと言った操作を行う操作キーが設定されています。
ファイルの内容をページ単位で表示する「less」コマンド
「less」コマンドは、ファイルの内容をページャー機能付で表示します。
moreコマンドとほぼ同じ機能を提供しますが、lessコマンドの方が豊富に機能が用意されています。
「less」コマンドに関する詳しい解説は下記にあります。
less、moreはページャー、ファイルの中身を表示するLinuxのコマンド
Linuxでファイルの内容を表示するcatコマンドの解説。more、lessで代替も
lessコマンドの基本的な使用例
「less」コマンドの基本的な使用例としては以下のようになります。
1 |
$ less /var/log/boot.log |
コマンドを実行すると画面が切り替わり、下記の画面が表示されます。
lessはページャーとして他のコマンドと組み合わせてコマンドの実行結果を画面単位で表示するために使うことがよくあります。
1 |
$ cat /var/log/boot.log | less |
例えば、上記の様に「cat」と組み合わせて使いますが、「less」は単独でファイルの内容を表示する機能を持っていますので、ファイルの内容を表示する場合は上記ように「less」コマンドだけで足りるのです。
lessコマンドのオプションについて
「less」コマンドのオプションとしては、連続したの空行を 1行にまとめる機能、長い行を折り返さずに表示する機能、行番号の表示・非表示などがあります。
また、表示された画面の操作、行を進めたり、ページを進めたり、戻ったりと言った操作を行う操作キーが設定されています。
ファイルの内容の先頭から指定された行数分を表示する「head」コマンド
「head」コマンドは、ファイルの先頭から指定した行数分の内容を表示します。
headコマンドに関する詳しい解説は下記にあります。
Linuxのheadコマンドは先頭行から、tailコマンドは最終行から指定した行を表示する
headコマンドの基本的な使用例
「head」コマンドの基本的な使用例としては以下のようになります。
1 |
$ head /var/www/html/logs/error.log |
デフォルトの設定は、10行表示する設定になっていますので、オプションを設定しない場合は、先頭から 10行を表示します。
また、表示する行数を指定する場合は、下記の様に「-n 行数」のオプションか、「-行数」のオプションを設定します。
デフォルトでは 10行表示となっていますので、下記のオプションを指定している状態となっています。
1 2 |
$ head -n 10 /var/www/html/logs/error.log $ head -10 /var/www/html/logs/error.log |
上記の 2つの記述は同じ表示結果になりますが、「head -10」の記述方法は推奨されていませんので、「head -n 10」の記述方法をオススメします。
headコマンドのオプションについて
「head」コマンドのオプションとしては、先に紹介した「-n(行数指定)」表示するバイト数を指定する機能などがあります。
ファイルの内容の最後の行から指定された行数分を表示する「tail」コマンド
「tail」コマンドは、ファイルの末尾から指定した行数分の内容を表示します。
tailコマンドに関する詳しい解説は下記にあります。
Linuxのheadコマンドは先頭行から、tailコマンドは最終行から指定した行を表示する
tailコマンドの基本的な使用例
「tail」コマンドの基本的な使用例としては以下のようになります
1 |
$ tail /var/www/html/logs/error.log |
デフォルトの設定は、10行表示する設定になっていますので、オプションを設定しない場合は、最終行から 10行を表示します。
また、表示する行数を指定する場合は、下記の様に「-n 行数」のオプションか、「-行数」のオプションを設定します。
デフォルトでは 10行表示となっていますので、下記のオプションを指定している状態となっています。
1 2 |
$ tail -n 10 /var/www/html/logs/error.log $ tail -10 /var/www/html/logs/error.log |
上記の 2つの記述は同じ表示結果になりますが、「tail -10」の記述方法は推奨されていませんので、「tail -n 10」の記述方法をオススメします。
また、tailコマンドは、更新されるログファイルをリアルタイムで表示する際にも使われます。
「-f」オプションを使用することで追加されたログをその都度表示することができ、更新されたログをリアルタイムに表示し続けることが出来るようになります。
1 |
$ tail -f /var/www/html/logs/error.log |
ちなみに、「tail -f」で表示し続けている処理を止める場合は、「Ctrl+C」を押します。
tailコマンドのオプションについて
「tail」コマンドのオプションとしては、先に紹介した「-n(行数指定)」「-f(追加された行を表示し続ける機能)」のほか、表示するバイト数を指定する機能などがあります。
また、headコマンドにも tailコマンドにも「n1行目~n2行目」を取り出す、という機能はありません。
そのため、ファイルの「100行目~110行目」を取り出したい場合は、下記のように headと tailを組み合わせて使うことになります。
1 |
$ head -n 110 error.log | tail -n 11 |
headで先頭から 110行目までの内容を取得し、tailでは 110行目から 11行さかのぼって取り出す、という処理となります。
(「100行目~110行目」は 11行ありますからね。)
ファイルの内容を 8進数、16進数で表示する「od」コマンド
「od」コマンドは、ファイルの内容を 8進数、16進数で表示します。
odコマンドの基本的な使用例
「od」コマンドの基本的な使用例としては以下のようになります。
デフォルトは、8進数での表示になります。
1 2 3 4 5 |
$ od file_name7 0000000 061141 062143 033545 005067 063546 064550 033552 005067 0000020 005012 065412 066554 067556 033467 070012 071161 072163 0000040 033467 000012 0000043 |
odコマンドのオプションについて
「od」コマンドのオプションとして、出力フォーマットを 10進数・16進数などにする機能、先頭からスキップするバイト数を指定する機能、表示するバイト数を指定する機能などがあります。
ファイルを指定したサイズで分割する「split」コマンド
「split」コマンドは、指定されたサイズでファイルを分割します。
splitコマンドに関する詳しい解説は下記にあります。
Linuxのsplitコマンドは指定したサイズにファイルを分割する
splitコマンドの基本的な使用例
「split」コマンドの基本的な使用例としては以下のようになります。
ログファイルなどの大きなファイルを指定したサイズに分割するときなどに使用します。
1 2 3 4 5 6 7 |
$ split -b 10M error.log error.log- $ls -lh -rw-rw-r--. 1 admin admin 10M 6月 6 14:22 error.log-aa -rw-rw-r--. 1 admin admin 10M 6月 6 14:22 error.log-ab -rw-rw-r--. 1 admin admin 10M 6月 6 14:22 error.log-ac -rw-rw-r--. 1 admin admin 10M 6月 6 14:22 error.log-ad -rw-rw-r--. 1 admin admin 1.1M 6月 6 14:22 error.log-ae |
ここでは「-b 10M」を指定していますので、10MB単位(1024の累乗)で分割しています。
分割後のファイル名は「error.log-」と指定していますので、この「error.log-」に「aa」「ab」「ac」...と順番に付与されたファイル名で生成されていきます。
デフォルトのサイズ設定は「1000行」となっていますので、行数、ファイルのサイズを指定しなかった場合は 1000行を 1ファイルとして分割します。
また、分割後のファイル名を指定しなかった場合は、デフォルトでは「x」が設定されていますので「xaa」「xab」「xac」...と付与されていきます。
分割したファイルを連結する場合は、先に紹介した「cat」コマンドを使用します。
1 |
$ cat error.log-?? > error.log2 |
splitコマンドのオプションについて
「split」コマンドのオプションとしては、分割条件をサイズで指定する「-b」オプションのほか、分割する行数で指定する機能、作成するファイル数で指定する機能、分割されたファイルに付与する接尾辞の桁数を変える、数値に変える機能などがあります。
ファイルの内容から指定したフィールドを取り出す「cut」コマンド
「cut」コマンドは、ファイルの各行から指定したフィールドを取り出します。
csvファイルなど、区切り文字(デリミタ)でフィールドが区切られているファイルを対象とします。
cutコマンドの基本的な使用例
「cut」コマンドの基本的な使用例としては、以下のようになります。
1 2 3 4 5 6 7 8 9 10 |
$ cut -d : -f 1,5 /etc/passwd root:root bin:bin ftp:FTP User systemd-network:systemd Network Management dbus:System message bus sshd:Privilege-separated SSH admin:admin apache:Apache mysql:MySQL Server |
「/etc/passwd」は、Linuxのユーザ情報(パスワードの情報)が保存されているファイルです。
この「passwd」ファイルは、デリミタ(区切り文字)として「:」が使われており、1つめのカラムに「ユーザID」、5つめのカラムに「コメント」が記載されていますので、それを取り出しています。
オプション「-d」でデリミタ(区切り文字)を指定し、オプション「-f」で取り出すフィールド(カラム)の位置を指定しています。
cutコマンドのオプションについて
「cut」コマンドのオプションとしては、先に紹介した「-d」「-f」の他に、切り出す位置をバイト数で指定したり文字数で指定する機能や、デリミタ(区切り文字)がない行は出力対象にしない機能などがあります。
複数ファイルを読み込み共通フィールドを持つ行を連結する「join」コマンド
「join」コマンドは、2つのファイルを読み込み、共通フィールドを持つ行を連結します。
joinコマンドの基本的な使用例
「join」コマンドの基本的な使用例としては以下のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 |
$ cat file_name1 100 red 200 blue 300 yellow $ cat file_name2 100 赤 200 青 300 黄 $ join file_name1 file_name2 100 red 赤 200 blue 青 300 yellow 黄 |
まずはじめに、「cat」コマンドを使い、「file_name1」「file_name2」の内容を確認し、その後に「join」コマンドでファイルの情報を連結しています。
このとき、joinでは 1つめのフィールドの数値が一致する行を連結しています。
「join」コマンドは、デフォルトでは一致するレコードがない場合は表示しません。
1 2 3 4 5 6 |
$ cat file_name5 100 赤 300 黄 $ join file_name1 file_name5 100 red 赤 300 yellow 黄 |
一致しないレコードも表示させる場合は下記の様に「-a」オプションを使用します。
「-a」オプションは比較するフィールドをパラメータとして必要としますので、ここでは比較するフィールド番号「1」を指定しています。
1 2 3 4 |
$ join -a 1 file_name1 file_name5 100 red 赤 200 blue 300 yellow 黄 |
また、joinで比較するカラムはあらかじめソートをしておく必要がありますので、「sort」コマンドを組み合わせて使うといいでしょう。
joinコマンドのオプションについて
「join」コマンドのオプションとしては、比較するカラム(フィールド)の位置を指定する機能、比較する文字のお文字小文字を区別しない機能、デフォルトでは合致するカラムがあった行のみが出力されますが、合致しない行も出力する機能や合致しなかった行のみ出力する機能などがあります。
複数ファイルを読み込み一致する行を水平方向に連結する「paste」コマンド
「paste」コマンドは、1つ以上のファイルを読み込み、それぞれ一致する行を水平方向に連結します。
pasteコマンドの基本的な使用例
「paste」コマンドの基本的な使用例としては以下のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 |
$ cat file_name1 100 red 200 blue 300 yellow $ cat file_name2 100 赤 200 青 300 黄 $ paste file_name1 file_name2 100 red 100 赤 200 blue 200 青 300 yellow 300 黄 |
まずはじめに、「cat」コマンドを使い、「file_name1」「file_name2」の内容を確認し、その後に「paste」コマンドでファイルの情報を連結しています。
前項の「join」コマンドでは、一致するカラムがある場合にフィールドを連結する機能を持ちますが、「paste」コマンドは、単純に 1行目、2行目、3行目...と各行ごとに連結していく機能を持っています。
また、pasteコマンドは「join」のようにカラム(フィールド)を指定することができませんので、特定のカラムのみ連結したい場合は、あらかじめ「cut」コマンドを利用して、必要なカラムのみ取り出しておく方法があります。
pasteコマンドのオプションについて
「paste」コマンドのオプションとしては、デフォルトでは連結するデリミタ(区切り文字)ですが、デリミタを指定する機能、ファイル単位で連結する機能などがあります。
ファイルの内容を行単位でフィールドの内容をソートする「sort」コマンド
「sort」コマンドは、行単位でフィールドの内容をソートします。
sortコマンドの基本的な使用例
「sort」コマンドの基本的な使用例としては以下のようになります。
1 2 3 4 5 6 7 8 |
$ cat file_name8 200 ううう 100 いいい 300 あああ $ sort file_name8 100 いいい 200 ううう 300 あああ |
まずはじめに、「cat」コマンドを使い、「file_name8」の内容を確認し、その後に「sort」コマンドでソートを実行しています。
デフォルトでは 1カラム目を対象にソートを実行しますが、下記のように「-k」オプションを使いカラム(フィールド)の位置を指定することもできます。
1 2 3 4 |
$ sort -k 2 file_name8 300 あああ 100 いいい 200 ううう |
sortコマンドのオプションについて
「sort」コマンドのオプションとしては、「-k」のほか、ソート順を逆にする機能や、デリミタ(区切り文字)を指定する機能、数値を文字として並べ替える機能、文字を数値とみなして並べ替える機能、アルファベットで記述された月名を月の順番で並び替える機能、重複している行を 1行にまとめる機能などがあります。
テキストの内容の重複している行を 1行にまとめる「uniq」コマンド
「uniq」コマンドは、入力されたテキストストリームの中で重複している行を調べ、重複している行を 1行にまとめて出力します。
「テキストストリーム」とは、ひとまとまりのテキストデータのことです。ストリームは、一般的にデータの入出力に伴うデータの流れのことをいいます。
uniqコマンドの基本的な使用例
「uniq」コマンドの基本的な使用例は以下のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
$ cat file_name3 abcde abcde abcde fghij fghij klmno pqrst $ uniq file_name3 abcde fghij klmno pqrst |
まず始めに、「cat」コマンドを使い、「file_name3」の内容を確認し、その後「uniq」コマンドで重複行を 1行にまとめています。
uniqコマンドは、次の行と比べて同一か否かの判断をしています。そのため、下記の様に sortコマンドなどを使用しあらかじめソートをしておく必要があります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
$ cat file_name2 abcde fghij klmno pqrst uvwxy klmno abcde abcde $ uniq file_name2 abcde fghij klmno pqrst uvwxy klmno abcde $ sort file_name2 | uniq abcde fghij klmno pqrst uvwxy |
最初の「uniq file_name2」では、最後の行の「abcde」だけが重複行として処理されています。
「sort file_name2 | uniq」でソートを実行することで、「abcde」「klmno」が 1行ずつになっています。
ただ、上記の「sort」+「uniq」コマンドですが、実は「sort」コマンドには重複行をまとめる「-u」オプションがありますので、上記のコマンドは下記の様に「sort」コマンドだけで実現できてしまいます。
1 2 3 4 5 6 |
$ sort -u file_name2 abcde fghij klmno pqrst uvwxy |
uniqコマンドのオプションについて
「uniq」コマンドのオプションとしては、デフォルトの重複行を 1行にまとめる処理を、重複していない行のみを出力する処理、重複している行のみを出力する処理に変更する機能や、比較する対象を何文字目から始める、何文字までにするを指定する機能、大文字と小文字の違いを無視して比較する機能などがあります。
標準入力された文字列を変換する「tr」コマンド
「tr」コマンドは、標準入力された文字列を変換します。
trコマンドの基本的な使用例
「tr」コマンドの基本的な使用例としては以下のようになります。
1 2 3 4 5 6 7 8 |
$ cat file_name1 100 red 200 blue 300 yellow $ tr 012 abc < file_name1 baa red caa blue 3aa yellow |
まずはじめに、「cat」コマンドを使い、「file_name1」の内容を確認し、その後に「tr」コマンドで置換を実行しています。
「tr」コマンドは、「tr 012 abc」を実行すると、「0」を「a」に、「1」を「b」に、「2」を「c」に置換します。
「012」のように連続した文字列を「abc」に置き換えるわけではなく、1文字単位で 1文字ずつ置換していきますので、その点の認識が必要です。
また、上記の理由から、置換前と置換後の文字セットの文字数はそろえておく必要があります。
「tr」コマンドは、標準入力を対象として置換をしますので、ファイル対象に置換を行う場合は、上記のように「<
」のリダイレクトでファイルを読み込むか、下記の様に「cat」コマンドを利用します。
1 |
$ cat file_name1 | tr 012 abc |
また、下記の様に小文字を大文字に置換する方法などが用意されています。
1 2 3 4 |
$ tr [:lower:] [:upper:] < file_name1 100 RED 200 BLUE 300 YELLOW |
trコマンドのオプションについて
「tr」コマンドのオプションとしては、置換せずにヒットした文字を削除する機能、ヒットする文字列が連続している場合は 1つにまとめて置換する機能などがあります。
ファイルの内容をコマンドの処理に従って処理する「sed」コマンド
「sed」コマンドは、「Stream Editor」の略で、テキストストリームに対してコマンドやスクリプトで処理を実行することが出来るコマンドです。
コマンドラインからテキストファイルの文字列を置換するために用いられることが多いコマンドです。
sedコマンドを使って文字列を置換する詳しい解説は下記にあります。
UNIX・Linuxの sedコマンドで特定の文字列を置換する方法
sedコマンドの基本的な使用例
「sed」コマンドの基本的な使用例としては以下のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 |
$ cat file_name1 100 red 200 blue 300 yellow $ sed "y/012/abc/" file_name1 baa red caa blue 3aa yellow $ sed "s/200/abc/" file_name1 100 red abc blue 300 yellow |
まずはじめに、「cat」コマンドを使い、「file_name1」の内容を確認し、その後に「sed」コマンドで置換を実行しています。
「sed "y/012/abc/"
」のように「y」を使用すると、「tr」同様に「0」と「a」、「1」と「b」、「2」と「c」を置換します。
「sed "s/200/abc/"
」のように「s」を使用すると、「tr」とは異なり、「200」という文字列を一つのまとまりとして「abc」という文字列に置換をします。
ちなみに、下記の「sed "s/0/abc/g"
」のように、最後に「g」を追加すると、文字列内のヒットする文字をすべて置換します。(「g」がない場合は、最初にヒットした文字のみを置換します。)
1 2 3 4 5 6 7 8 |
$ sed "s/0/abc/" file_name1 1abc0 red 2abc0 blue 3abc0 yellow $ sed "s/0/abc/g" file_name1 1abcabc red 2abcabc blue 3abcabc yellow |
また、ファイル名を指定しない場合は、「tr」と同じく標準入力を対象として置換を行いますので、下記の様に記述することも出来ます。
1 |
$ cat file_name1 | sed "s/200/abc/g" |
sedコマンドのオプションについて
「sed」コマンドのオプションとしては、指定した行を削除する機能、パターンにマッチする行を表示する機能、正規表現を用いて置換する機能、スクリプト(コマンド)を用いて処理する機能、ファイルをバックアップしながら上書きする機能などがあります。
ファイルの中にあるタブをスペースに変換する「expand」コマンド
「expand」コマンドは、テキストファイルの中にあるタブをスペースに変換します。
expandコマンドの基本的な使用例
「expand」コマンドの基本的な使用例は、以下のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 |
$ cat file_name1 001 abcde fghij klmno 002 fghij klmno pqrst 003 klmno pqrst uvwxy $ expand file_name1 001 abcde fghij klmno 002 fghij klmno pqrst 003 klmno pqrst uvwxy $ expand -t 4 file_name1 001 abcde fghij klmno 002 fghij klmno pqrst 003 klmno pqrst uvwxy |
まず始めに、「cat」コマンドを使い、「file_name1」の内容を確認し、その後に「expand」コマンドを使用し、タブを置換しています。
ただ、expandコマンドのデフォルトは 8文字単位で置換するため、オプションを付けない場合は、タブが置換されたのかよく分かりません。
そのため、これを文字数を指定する「-t」オプションを使い 4文字のスペースに置き換えるコマンドも実行しています。
「cat」コマンドで画面に出力すると違いが分かりませんが、リダイレクトでファイルに出力し、viエディタで開くと、タブが空白に置換されていることを確認することができます。
expandコマンドのオプションについて
「expand」コマンドのオプションとしては、「-t」のほか、空白文字ではない文字に続いているタブは変換しない機能などがあります。
ファイルの行頭にある連続した空白をタブに変換する「unexpand」コマンド
「unexpand」コマンドは、行頭にある連続した空白をタブに変換します。
unexpandコマンドの基本的な使用例
「unexpand」コマンドの基本的な使用例としては以下のようになります。
1 2 3 4 5 6 7 8 |
$ cat file_name1 001 abcde fghij klmno 002 fghij klmno pqrst 003 klmno pqrst uvwxy $ unexpand file_name1 001 abcde fghij klmno 002 fghij klmno pqrst 003 klmno pqrst uvwxy |
まず始めに、「cat」コマンドを使い、「file_name1」の内容を確認し、その後に「expand」コマンドを使用し、先頭のスペースをタブに置換しています。
見た目では違いが分かりませんが、リダイレクトでファイルに出力し、viエディタで開くと、タブになっていることを確認することができます。
unexpandコマンドのオプションについて
「unexpand」コマンドのオプションとしては、「-t」のほか、空白文字ではない文字に続いているタブは変換しない機能などがあります。
テキストを決められた桁で整形する「fmt」コマンド
「fmt」コマンドは、テキストを決められた桁で整形します。
fmtコマンドの基本的な使用例
「fmt」コマンドの基本的な使用例としては以下のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 |
$ cat file_name1 12345678901234567890123456 abcdefghijklmnopqrstuvwxyz 1 2 3 4 5 6 7 8 9 0 1 2 3 a b c d e f g h i j k l m $ fmt -w 20 -s file_name1 12345678901234567890123456 abcdefghijklmnopqrstuvwxyz 1 2 3 4 5 6 7 8 9 0 1 2 3 a b c d e f g h i j k l m |
まずはじめに、「cat」コマンドを使い、「file_name1」の内容を確認し、その後に「fmt」コマンドで整形を行っています。
オプション「-w 20」で 1行を 20文字にするという指定を行い、オプション「-s」で改行を有効として扱うという指定をしています。
「-s」がない場合は、行を連結した上で 1行の文字数をカウントしていきますので、下記の様に結果的に改行はないものとして処理されます。最初からある改行をそのまま有効としたい場合は「-s」オプションを指定します。
1 2 3 4 5 6 |
$ fmt -w 20 file_name1 12345678901234567890123456 abcdefghijklmnopqrstuvwxyz 1 2 3 4 5 6 7 8 9 0 1 2 3 a b c d e f g h i j k l m |
また、単語単位で整形をするため 1行目、2行目の数値、文字が空白なしで連続している場合は、途中での改行はされません。
fmtコマンドのオプションについて
「fmt」コマンドのオプションとしては、「-w」「-s」のほか、段落の最初のインデント処理(文字下げ処理)をする機能、単語間の連続するスペースを 1つにまとめる機能などがあります。
ファイルの行数、単語数、バイト数をカウントし表示する「wc」コマンド
「wc」コマンドは、ファイルの行数、単語数、バイト数をカウントし、表示します。
wcコマンドを使って文字列を置換する詳しい解説は下記にあります。
Linuxの wcコマンドでファイルの行数、単語数、バイト数、文字数をカウントする
wcコマンドの基本的な使用例
「wc」コマンドの基本的な使用例としては以下のようになります。
1 2 3 4 5 6 |
$ cat file_name2 100 red 赤 200 blue 青 300 yellow 黄 $ wc file_name2 3 9 40 file_name2 |
まずはじめに、「cat」コマンドを使い、「file_name2」の内容を確認し、その後に「wc」コマンドで行数、単語数、バイト数をカウントした結果を表示しています。
「file_name2」の前に表示されている「3」が「行数」、「9」が「単語数」、「40」が「バイト数」となります。
wcコマンドのオプションについて
「wc」コマンドのオプションとしては、行数(改行の数)のみを表示する機能、単語数のみを表示する機能、バイト数のみを表示する機能、文字数のみを表示する機能などがあります。
印刷するときなどにファイルの書式を整形する「pr」コマンド
「pr」コマンドは、ファイルの書式を整えます。
一般的にはファイルを印刷する際に形式を整形する際に利用します。
prコマンドの基本的な使用例
「pr」コマンドの基本的な使用例としては以下のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
$ cat file_name11 0100 red 0200 blue 0300 yellow 0400 green 0500 white 0600 black 0700 gray 0800 orange 0900 pink 1000 purple 1100 brown 1200 magenta 1300 cyan 1400 indigo [admin@localhost join]$ [admin@localhost join]$ [admin@localhost join]$ pr -l 20 file_name11 2020-06-08 14:41 file_name11 1 ページ 0100 red 0200 blue 0300 yellow 0400 green 0500 white 0600 black 0700 gray 0800 orange 0900 pink 1000 purple 2020-06-08 14:41 file_name11 2 ページ 1100 brown 1200 magenta 1300 cyan 1400 indigo |
まずはじめに、「cat」コマンドを使い、「file_name11」の内容を確認し、その後に「pr」コマンドでページごとに分けた印刷用のページを整形しています。
「-l 20」は 1ページを 20行とすることを指定しています。
空行の部分もありますが、ヘッダー、フッター、空白行も含めて 1ページ 20行として整形されて出力されています。
prコマンドのオプションについて
「pr」コマンドのオプションとしては、「-l」のほか、制御文字の表示をする機能や、段組で表示する機能、マージンを設定する機能、行数を表示する機能、タブをスペースに・スペースをタブに置換する機能などがあります。
GoogleAdwords
GoogleAdwords
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!
関連記事
-
Linuxでファイルの内容を表示するcatコマンドの解説。more、lessで代替も
catはLinuxのコマンドで、本来の機能はファイルを連結だが、ファイルの内容を表示する機能のために使うことが多く使用頻度が高い。同種の機能のmore、less、tacコマンドについても解説。
-
Linuxのマニュアルページ表示コマンドmanの解説
Linuxにはコマンド操作のオンラインマニュアルが用意されています。そのマニュアルを表示するコマンドが「man」です。「man」コマンドの使い方について解説します。
-
Linuxのタイムスタンプはmtime、ctime、atimeの3種類。touchコマンドで更新する方法
Linuxのファイルのタイムスタンプにはmtime、ctime、atimeの3種類がある。その違いを詳細に解説しつつ、lsで表示するオプション、touchで更新するオプションを解説。
-
Linuxの wcコマンドでファイルの行数、単語数、バイト数、文字数をカウントする
Linuxの行数、単語数、文字数、バイト数をカウントする「wc」コマンドの使い方の解説。find、lsと組み合わせてファイル数のカウント方法などを解説。
-
Linuxのbashで変数に値を追加する方法を多数紹介。+=や””を使う方法など
Linuxのbashで変数に値を代入する方法を解説。bashの変数の処理は柔軟で様々な方法を採れる。デリミタなしで値を追加する方法などを解説。
-
Linuxのbashのコマンドの履歴をhistoryで確認し!、↓、↑で実行する
Linuxで実行したコマンドの履歴を確認するコマンド「history」。「history」の使い方、設定の変更、設定ファイルの設置場所について解説。「!番号」「!文字列」「!?文字列」など。
-
makewhatis、mandbコマンドでLinuxのオンラインマニュアル索引情報を更新
Linuxコマンドのオンラインマニュアルを検索するwhatis、aproposなどのコマンドはwhatisデータベースを対象に検索する。このデータベースを更新するmandb、makewhatisコマンドを解説。
-
Linuxのsplitコマンドは指定したサイズにファイルを分割する
Linuxのsplitコマンドはファイルを分割する機能を有する。分割するサイズ、行数、ファイル数を指定するオプションや、分割後のファイルの接尾辞を指定するオプションなどがある。
-
Linuxで使用される主な環境変数・PATH、HOME、PS1・printenv、set、declare
Linuxに設定されている主な環境変数の解説。PWD、HOSTNAME、USER、LANG、HOME、LOGNAME、PS1、PS2、HISTSIZE、HISTFILE、HISTFILESIZE、TERMなどがある。
-
Linuxのnlは行番号を付与してファイルの内容を表示するコマンド
Linuxでファイルを表示する際に行番号を付与するにはcatコマンドにnオプションを使うことでも可能。しかし、行番号を付与する専門のnlコマンドがある。ここではその使い方を詳細に解説。