Linux三剣客のGrep&Sed
1. Grep
構文grep pattern filename
pattern参照単純正則
パラメータ
パラメータ
関数#カンスウ#
-i
大文字と小文字を無視
-w
全語一致
-r/R
フォルダ内のファイルを再帰的に一致させる
-n
行番号の表示
-c
一致する行数を表示
-v
一致しない行を表示
-l
一致するファイル名を表示
2. Sed
2.1原理
![Alt text](./sed原理.jpg)
2.2パラメータ
パラメータ
意味
-n
sed**デフォルト**出力の抑制
-e
式の指定
-f
sedスクリプトの指定
-r
ere正規表現を使用し、デフォルトではgnu拡張breを使用します.
-i
In-place修正、すなわち修正が元のファイルに作用する
NOTE:-nはデフォルト出力を抑制し、デフォルトではsedは1行を処理し、この行にコマンドが作用しなくても1行を出力します.-nと−iは同時に使用できず、−nは
2.3アドレス
例
意味
n
N行目でコマンドを実行
m,n
m~n行でコマンドを実行
/RE/
正規/RE/行の一致
n,/RE/
n行目から正規表現/RE/が一致する行まで、/RE/が一致しない場合、nから最後の行まで
/RE/, m
/RE/からm行目まで/RE/が一致しない場合は実行されません
/RE1/,/RE2/
/RE 1/行から/RE 2/行へ
2.4コマンド
コマンド#コマンド#
意味
アドレス空間
s
コンテンツの置換
シングルアドレス
d
行の削除
シングルアドレス
c
行の置換
シングルアドレス
p
行印刷
シングルアドレス
a
行追加
シングルアドレス
i
行の挿入
シングルアドレス
=
行番号の印刷
シングルアドレス
NOTE:シングルアドレス:具体的なアドレス.アドレスペア:アドレス範囲、例えばm,n
2.5栗
Sed is a stream editor. A stream editor is used to perform basic text transformations on an input stream (a file or input from a pipeline). Whilein some ways similar to an editor which permits scripted edits (such as ed), sed works by making only one pass over the input(s).
2.5.1コンテンツ置換
2.5.2行置換
NOTE:上記1,2行を1行に置き換えた.
2.5.3行挿入
2.5.4行番号の印刷
/basic/が存在する行を検索し、その行を印刷し、行番号を出力します.
構文grep pattern filename
pattern参照単純正則
パラメータ
パラメータ
関数#カンスウ#
-i
大文字と小文字を無視
-w
全語一致
-r/R
フォルダ内のファイルを再帰的に一致させる
-n
行番号の表示
-c
一致する行数を表示
-v
一致しない行を表示
-l
一致するファイル名を表示
grep -i -l -r "Student" /src/ --color
src/stu.cpp
2. Sed
2.1原理
![Alt text](./sed原理.jpg)
sed
行ごとにテキストを取り、コマンドセットの各コマンドを順次実行し、最後にコマンドを出力する.Sed
コマンドモード:アドレス+アクション2.2パラメータ
パラメータ
意味
-n
sed**デフォルト**出力の抑制
-e
式の指定
-f
sedスクリプトの指定
-r
ere正規表現を使用し、デフォルトではgnu拡張breを使用します.
-i
In-place修正、すなわち修正が元のファイルに作用する
NOTE:-nはデフォルト出力を抑制し、デフォルトではsedは1行を処理し、この行にコマンドが作用しなくても1行を出力します.-nと−iは同時に使用できず、−nは
sed
の出力を抑制し、−iはまた出力を必要とする.−eは、sed -e "/abc/p" -e "/bcd/p" text
-eのように複数の式を指定し、セミコロンで-eを省略し、sed "/abc/p;/bcd/p" text
のように> cat text
Sed is a stream editor.
> sed "/stream/p" text
Sed is a stream editor.
Sed is a stream editor.
> sed -n "/stream/p" text
Sed is a stream editor.
2.3アドレス
例
意味
n
N行目でコマンドを実行
m,n
m~n行でコマンドを実行
/RE/
正規/RE/行の一致
n,/RE/
n行目から正規表現/RE/が一致する行まで、/RE/が一致しない場合、nから最後の行まで
/RE/, m
/RE/からm行目まで/RE/が一致しない場合は実行されません
/RE1/,/RE2/
/RE 1/行から/RE 2/行へ
2.4コマンド
コマンド#コマンド#
意味
アドレス空間
s
コンテンツの置換
シングルアドレス
d
行の削除
シングルアドレス
c
行の置換
シングルアドレス
p
行印刷
シングルアドレス
a
行追加
シングルアドレス
i
行の挿入
シングルアドレス
=
行番号の印刷
シングルアドレス
NOTE:シングルアドレス:具体的なアドレス.アドレスペア:アドレス範囲、例えばm,n
2.5栗
Sed is a stream editor. A stream editor is used to perform basic text transformations on an input stream (a file or input from a pipeline). Whilein some ways similar to an editor which permits scripted edits (such as ed), sed works by making only one pass over the input(s).
2.5.1コンテンツ置換
[address]s/pattern/replace text/flags
sed -n "1,2 s/stream/strong stream/g" text
2.5.2行置換
[address-pair | address]c\text
は、一致する行をtextの内容に置き換えます.sed "1,2c\Sed is a good editor." text
-------------------------------------
Sed is a good editor.
While in some ways similar to an editor which permits scripted edits (such as ed),
sed works by making only one pass over the input(s).
NOTE:上記1,2行を1行に置き換えた.
2.5.3行挿入
[address]i\text
指定行にtextを挿入する内容sed "1i\Sed is a good editor." text
-----------------------------------
Sed is a good editor.
Sed is a stream editor. A stream editor is used to perform basic
text transformations on an input stream (a file or input from a pipeline).
While in some ways similar to an editor which permits scripted edits (such as ed),
sed works by making only one pass over the input(s).
2.5.4行番号の印刷
/basic/が存在する行を検索し、その行を印刷し、行番号を出力します.
{ }
コマンドセットは、;
によってコマンドを分割します.sed -n "/basic/{=;p}" text
---------------------------
1
Sed is a stream editor. A stream editor is used to perform basic