IT

正規表現を使用してのテキスト検索、ファイルの基本的な操作【LPIC level1】

目次

  • 正規表現を使用してのテキスト検索
  • 正規表現
  • grepコマンド
  • sedコマンド
  • ファイルの基本的な操作
  • viエディタの基本

正規表現を使用してのテキスト検索

正規表現

正規表現とは、特定の条件を表す文字列を抽象的に表現したものです。

メタキャラクタ説明
.任意の1文字
ex)「a..d」は「abcd」や「ao7d」などを表します。
*直前の文字の0回以上の繰り返し
ex)「ab*c」は「ac」や「abc」や「abbc」などbの繰り返しを表します。
[][]内の文字のいずれか1文字
 -:範囲を指定します。
 ^:行頭にある時は「~以外」を表します。 
^行頭
$行末
\次に来る文字をメタキャラクタではなく通常の文字として処理します。
+直前の文字の1回以上の繰り返し
【拡張正規表現】
?直前の文字の0回もしくは1回の繰り返し
【拡張正規表現】
|左右いずれかの文字列
【拡張正規表現】

grepコマンド

grepコマンドは、ファイルやテキストストリームの中に、正規表現によって表される検索文字列があるかどうかを調べます。

以下、grepコマンドの書式です。

  • grep [オプション] 検索パターン [ファイル名]
  • grep [オプション] [-f ファイル名] [ファイル名]
オプション説明
-cマッチした行の行数のみ表示します。
-f検索パターンをファイルから読み込みます。
-i大文字と小文字を区別しません。
-n先頭に行番号をつけて、マッチした行を表示します。
-vマッチしなかった行を表示します。
-E拡張正規表現を使用します。(egrepコマンドと同様)
-F検索パターンを正規表現ではなく、固定文字列とする

sedコマンド

sedコマンドとは、ファイルや標準入力の内容を編集して表示するコマンドです。

以下、sedコマンドの書式です。

  • sed [オプション] 編集コマンド [ファイル名]
  • sed [オプション] -e 編集コマンド1 [-e 編集コマンド2…] [ファイル名]
オプション説明
-e編集コマンドを指定します。
-f編集コマンドを記述したファイルを指定します。
編集コマンド説明
s/文字列1/文字列2/各行の最初に現れる文字列1を文字列2に置換
s/文字列1/文字列2/g全ての文字列1を文字列2に置換
/文字列/d文字列が含まれる行を削除
行番号1,行番号2d行番号1から行番号2までの行を削除
y/文字1文字2/文字3文字4/文字1を文字3に文字2を文字4置換

ファイルの基本的な操作

テキストファイルを編集するにはエディタを使います。

viエディタの基本

viエディタの特徴は、コマンドモードと入力モードという2つの動作モードを切り替えながら使う点です。

入力モードへの切り替え

コマンド説明
iカーソルの左から入力開始
aカーソルの右から入力開始
Iカーソルのある行の行頭から入力開始
Aカーソルのある行の末尾から入力開始
oカーソルのある行の下に空白行を挿入し、その行から入力開始
Oカーソルのある行の上に空白行を挿入し、その行から入力開始

入力モードからコマンドモードへ移行する時にEscキーを使用します。

カーソル及び画面操作

コマンド説明
h1文字左へ移動
l1文字右へ移動
k1文字上へ移動
j1文字下へ移動
0行頭へ移動
$行末へ移動
H画面の最上行へ移動
L画面の最下行へ移動
ggファイルの先頭へ移動
Gファイルの最終行へ移動
nGファイルのn行目へ移動
:nファイルのn行目へ移動
Ctrl+f次の画面へ移動
Ctrl+b前の画面へ移動

viの終了、ファイルの保存、シェルコマンドの実行

コマンド説明
:qファイルへ保存せずに終了
:q!編集中の内容を保存せずに終了
:wq編集中の内容を保存して終了
ZZ編集中の内容を保存して終了
:w編集中の内容でファイルを上書き保存
:e!最後に保存した内容に復帰
:r ファイル名ファイルの内容をカレント行以降に読み込む
:! コマンドviを終了せずにシェルコマンドを実行
:r! コマンドシェルコマンドの実行結果を挿入

viの編集コマンド

コマンド説明
yy
Y
カーソル位置の行をバッファにコピー
ywカーソル位置の単語をバッファにコピー
ddカーソル位置の行を削除し、バッファにコピー
dwカーソル位置の単語を削除し、バッファにコピー
xカーソル位置の文字を削除し、バッファにコピー
Xカーソル位置の左の文字を削除し、バッファにコピー
pバッファの内容を挿入
(文字や単語はカーソルの左、行はカーソルの上に挿入)
Pバッファの内容を挿入
(文字や単語はカーソルの左、行はカーソルの上に挿入)
u元に戻す(直前の操作をとりやめる)

文字列の検索

コマンド説明
/文字列指定した文字列をカーソル位置からファイルの末尾に向かって検索
?文字列指定した文字列をカーソル位置からファイルの先頭に向かって検索
n次を検索
N次を検索(逆方向)

viの設定変更

コマンド説明
:set nu | number行番号を表示
:set nonu | nonumber行番号を表示しない
:set ts=タブ幅|tabstop=タブ幅タブ幅を数値で指定

最後まで読んで頂き、ありがとうございました。

他の分野へ移動できる全体ページへは下記リンクから移動できます。