このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

Linuxコマンドの基本:vi エディタの操作:検索と置換

vi エディタの操作:検索と置換

 vi エディタは強力なテキスト編集機能を持ち、その中でも検索置換は頻繁に使用される重要な機能です。ここでは、vi エディタでの文字列の検索方法と、特定の文字列を別の文字列に置き換える方法について詳しく解説します。

検索

 vi では、ファイル内の文字列を簡単に検索することができます。検索を行うには、以下の手順を実行します。

  • コマンドモード/または?を押します。
    /:カーソル位置から下方向(ファイルの末尾方向)に検索します。
    ?:カーソル位置から上方向(ファイルの先頭方向)に検索します。
  • 検索したい文字列を入力します。
  • Enterキーを押すと、検索が実行され、該当する文字列の位置にカーソルが移動します。

練習用ファイルの準備

 実際に操作を練習するために、システムの/etc/crontabファイルをカレントディレクトリにコピーし、vi で開きます。

user01@ubuntu:~$ cp /etc/crontab  .
user01@ubuntu:~$ ls
crontab  work          テンプレート  ドキュメント  ピクチャ      公開
snap     ダウンロード  デスクトップ  ビデオ        ミュージック
user01@ubuntu:~$ vi crontab

例:文字列 "month" を検索

コマンドモードで/を押します。

/

検索文字列としてmonthを入力します。

/month

Enterキーを押すと、"month"という文字列を持つ最初の場所にカーソルが移動します。

検索結果の移動

検索結果が複数存在する場合、以下のコマンドで次の操作が可能です。

  • n:次の検索結果に移動します(検索方向と同じ方向)。
  • N:前の検索結果に移動します(検索方向と逆方向)。

主な検索コマンド一覧

コマンド内容
/文字列カーソル位置から下方向に向かって文字列を検索する
?文字列カーソル位置から上方向に向かって文字列を検索する
n次の検索結果に移動する(検索方向と同じ)
N前の検索結果に移動する(検索方向と逆)
主な検索コマンド一覧

メモ

  • 検索開始位置:検索は現在のカーソル位置から始まります。ファイル全体を検索したい場合は、ggでファイルの先頭に移動してから検索するとよいでしょう。
  • lessコマンドとの共通点:これらの検索操作は、lessコマンドと同じであり、lessに慣れている場合はスムーズに利用できます。

置換

 vi エディタでは、指定した文字列を別の文字列に置き換える置換機能も利用できます。置換を行うには、以下の手順を実行します。

コマンドモードで:(コロン)を押し、コマンドラインモードに入ります。

置換コマンドを入力します。

 %s/置換元文字列/置換後文字列/g
  • %s:ファイル全体を対象とすることを示します。
  • g:該当するすべての箇所を置換することを示します。

例:文字列 "month" を "mouse" に置換

1.コマンドモードで:を押します。

2.以下のコマンドを入力します。

:%s/month/mouse/g

3.Enterキーを押すと、ファイル内のすべての"month"が"mouse"に置き換えられます。

置換前のテキスト例

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...

置換後のテキスト例

置換コマンドの構成

  • 範囲指定
    %:ファイル全体を対象とします。
    数字1,数字2:特定の範囲を指定する(例:1,10s/old/new/gは1行目から10行目まで)。
  • s:substitute(置換)の略。
  • g:globalの略で、各行の中で該当するすべての文字列を置換します。gを省略すると、各行で最初に見つかった文字列のみが置換されます。

主な置換コマンド一覧

コマンド内容
:%s/old/new/gファイル全体で"old"を"new"に置換
:1,10s/old/new/g1行目から10行目までで"old"を"new"に置換
:s/old/new/現在の行で最初に見つかった"old"を"new"に置換
:s/old/new/g現在の行で見つかったすべての"old"を"new"に置換
主な置換コマンド一覧

ファイルの保存とviの終了、練習ファイルの削除

 これまでの練習で、crontabファイルを編集しました。ここでは、そのファイルを保存してvi を終了し、練習用に作成したファイルを削除する手順を解説します。

viでファイルを保存して終了する

1.コマンドモードに移行する

 まず、Escキーを押してコマンドモードに戻ります。挿入モードでテキストを編集していた場合、Escキーを押すことでコマンドを入力できる状態になります。

2.ファイルを保存してviを終了する

コマンドモードで以下のコマンドを入力し、Enterキーを押します。

:wq!

練習で作成したファイルを削除する

vi を終了してターミナルに戻ったら、練習用にコピーしたcrontabファイルを削除します。

user01@ubuntu:~$ rm crontab

削除の確認

lsコマンドでファイルが削除されたことを確認します。

user01@ubuntu:~$ ls
snap     ダウンロード  デスクトップ  ビデオ    ミュージック
work     テンプレート  ドキュメント  ピクチャ  公開

まとめ

  • 検索
    /文字列で下方向に検索、?文字列で上方向に検索。
    nNで検索結果間を移動。
  • 置換
    :%s/置換元/置換後/gでファイル全体の文字列を置換。
    ・範囲指定やオプションを活用して柔軟に置換操作が可能。

 vi エディタの検索と置換機能をマスターすることで、大量のテキスト編集作業を効率的に行えるようになります。これらのコマンドを実際に試して、操作に慣れていきましょう。