「Linux 正規表現を使ってテキストファイルを検索」の版間の差分
ナビゲーションに移動
検索に移動
(同じ利用者による、間の2版が非表示) | |||
1行目: | 1行目: | ||
− | ==Linux 正規表現を使ってテキストファイルを検索== | + | ==[[Linux 正規表現を使ってテキストファイルを検索]]== |
− | [[Linux][Linux コマンド]] | + | [[Linux]] | [[Linux コマンド]] | [[Category:正規表現]] |
{{amazon|487311070X}} | {{amazon|487311070X}} | ||
*ファイルグロブでは、*などコマンドラインで特別な意味を持つ特殊文字を使用する | *ファイルグロブでは、*などコマンドラインで特別な意味を持つ特殊文字を使用する | ||
*bashが認識するワイルドカード文字はほんの数個だが、比較的単純なファイル名のグロビングには十分 | *bashが認識するワイルドカード文字はほんの数個だが、比較的単純なファイル名のグロビングには十分 | ||
*単純でないグロビングが必要になる場合、ファイルグロブの考え方を汎用のテキストストリームに応用することで広範な機能が利用できるようになる | *単純でないグロビングが必要になる場合、ファイルグロブの考え方を汎用のテキストストリームに応用することで広範な機能が利用できるようになる | ||
− | * | + | *そのためには、[[正規表現]]を利用する |
===grep=== | ===grep=== | ||
grep [options] regex [file] | grep [options] regex [file] | ||
− | * | + | *fileで指定したファイルまたは標準入力から、regexでしてした[[正規表現]]に一致する行を検索する |
====頻用オプション==== | ====頻用オプション==== | ||
{|class="wikitable" | {|class="wikitable" | ||
28行目: | 28行目: | ||
|- | |- | ||
|-v | |-v | ||
− | | | + | |regexで指定した[[正規表現]]に一致しない行をすべて出力 |
|- | |- | ||
|} | |} | ||
− | <blockquote> | + | <blockquote>シェルによる展開の問題を咲けるため、コマンドラインでは[[正規表現]]を引用符で囲むようにする</blockquote> |
===sed=== | ===sed=== | ||
sed [options] 'command1' [file] | sed [options] 'command1' [file] | ||
37行目: | 37行目: | ||
sed [options] -f script [file] | sed [options] -f script [file] | ||
*command1は単一引用符で囲むことに注意する(シェルによる評価と展開を抑制のため) | *command1は単一引用符で囲むことに注意する(シェルによる評価と展開を抑制のため) | ||
− | * | + | *sedコマンドのアドレス部分にはスラッシュで囲んだ[[正規表現]]を含めることができる |
=====例===== | =====例===== | ||
*file1で指定したファイルの内容の空行を除きすべて表示する | *file1で指定したファイルの内容の空行を除きすべて表示する | ||
$ sed '/^$/ d' file1 | $ sed '/^$/ d' file1 | ||
====引用符==== | ====引用符==== |
2020年2月16日 (日) 04:28時点における最新版
Linux 正規表現を使ってテキストファイルを検索
Linux | Linux コマンド |
- ファイルグロブでは、*などコマンドラインで特別な意味を持つ特殊文字を使用する
- bashが認識するワイルドカード文字はほんの数個だが、比較的単純なファイル名のグロビングには十分
- 単純でないグロビングが必要になる場合、ファイルグロブの考え方を汎用のテキストストリームに応用することで広範な機能が利用できるようになる
- そのためには、正規表現を利用する
grep
grep [options] regex [file]
- fileで指定したファイルまたは標準入力から、regexでしてした正規表現に一致する行を検索する
頻用オプション
オプション | 内容 |
---|---|
一致した行の数だけを表示 | |
一致した行を表示するが、複数ファイルを指定した場合、付加されるファイル名を表示しない | |
大文字小文字を区別しない | |
一致行に行番号を付与 | |
regexで指定した正規表現に一致しない行をすべて出力 |
<blockquote>シェルによる展開の問題を咲けるため、コマンドラインでは正規表現を引用符で囲むようにする</blockquote>
sed
sed [options] 'command1' [file] sed [options] -e 'command1' [-e 'command2'] [file] sed [options] -f script [file]
- command1は単一引用符で囲むことに注意する(シェルによる評価と展開を抑制のため)
- sedコマンドのアドレス部分にはスラッシュで囲んだ正規表現を含めることができる
例
- file1で指定したファイルの内容の空行を除きすべて表示する
$ sed '/^$/ d' file1
引用符
© 2006 矢木浩人