フィルタを使用した文字列操作 1

 フィルタとは

フィルタとは標準入力からデータを受け取り、そのデータを加工した上で標準出力に出力する機能のこと

コマンド | filter

 

sed コマンドを使用したフィルタリング

各行の最初に一致した文字列のみ置換

sed -e 's/パターン1/パターン2/'

f:id:mkyosuke:20200310163539p:plain

 

一致したすべての文字列を置換

sed -e 's/パターン1/パターン2/g'

f:id:mkyosuke:20200310164143p:plain

 

アルファベットの大文字・小文字を区別せず、置換する

sed -e 's/パターン1/パターン2/i'

 

連続置換

複数パターンの置換を連続して行うには、-e オプションで複数の置換パターンを連結して指定

sed -e 's/パターン1/パターン2/' -e 's/パターン3/パターン4/'

f:id:mkyosuke:20200310164909p:plain

 

パターン指定の区切り文字を変更する

sed -e 's%パターン1%パターン2%'
sed -e 's|パターン1|パターン2|'
sed -e 's:パターン1:パターン2:'

f:id:mkyosuke:20200310165914p:plain

 

文字列の削除

 各行の最初に一致したパターンを削除する。

sed -e 's/パターン//'

全てのパターンを削除する。

sed -e 's/パターン//g'

f:id:mkyosuke:20200310171913p:plain

 

正規表現を使用した文字列置換

「a~e」を「X」に置換する

f:id:mkyosuke:20200310172341p:plain

 

数字以外を削除

f:id:mkyosuke:20200310172759p:plain

行頭に文字を追加する

f:id:mkyosuke:20200310172945p:plain

行末に文字を追加する

f:id:mkyosuke:20200310173147p:plain

 

変数を利用した文字列置換

sed -e "s/変数名/置換後パターン/"
sed -e "s/置換対象パターン/変数名/"
sed -e "s/変数名1/変数名2/"

 

行を指定した置換

特定の 1行のみで置換

sed -e '行番号s/パターン1/パターン2/' 

5行目を置換

f:id:mkyosuke:20200310180542p:plain

開始行~終了行の範囲でのみ置換

sed -e '開始行,終了行s/パターン1/パターン2/'

4,5行目を置換

f:id:mkyosuke:20200310181005p:plain

 

特定の行を削除する

sed -e '/パターン/d'

f:id:mkyosuke:20200310181250p:plain

 

空行を削除する

sed -e '/^$ /d'

f:id:mkyosuke:20200310181507p:plain

 

特定の行のみを表示する

n行目を表示

sed -n '行番号p'

1行目を表示

f:id:mkyosuke:20200310182223p:plain

n行目~m行目を表示

sed -n '開始行,終了行p'

2~4行目を表示

f:id:mkyosuke:20200310182409p:plain

 

特定の位置の文字列を切り出す

sedコマンドの場合

sed -e 's/パターンA\(切り出し対象パターン\)パターンB/\1/'

f:id:mkyosuke:20200310182847p:plain

exprコマンドの場合

expr "文字列" : "パターンA\(対象パターン\)パターンB"

f:id:mkyosuke:20200310183217p:plain