アフィリエイトで豊かに暮らそう

実践アフィリエイト

アフィリエイトで豊かな暮らしを楽しみましょう。

sedコマンド


オプション

解説

e

後続の指定値が編集用のコマンドであることを示す

n

指定した行だけを標準出力に出力する

 

編集用コマンド

解説

s

substiuteの置換の略で-eを指定した場合に指定

q

quitの略で何行目までを処理対象としたい場合に指定

p

printの表示の略で-nを指定した場合に指定

d

deleteの略で削除を意味する

g

globalの略(gを省略すると最初に現れる文字列が対象となる)

!

否定を意味し、!pなどと指定すれば表示しないという意味となる

[]

タブやスペースを表現する際に用いる

 

ワイルドカード

解説

.

任意の1文字

*

任意の文字列

.*

全行(1文字、文字列、NULL値も処理対象とする)

,

5,10などのように5行から10行目を処理対象とする場合に付与

^

先頭行

$

何行から何行までの指定で使用すれば最終行1行が対象の場合は行末を示す

 

クォート

解説

""

変数を展開(必須ではない)

''

変数を展開せず文字として出力(必須ではない)

sedで使用される特殊文字$(最終行)などをsedに渡す場合などに使用

 

用途

解説

置換

echo "OldOld" | sed -e "s/Old/New/"

文字列OldOldNewOld置換

echo "OldOld" | sed -e "s/Old/New/g"

文字列OldOldNewNew置換

sed -e "5,20s/Old/New/g" file

5行目から20行目までのOldNewに置換

sed -e '5,$s/Old/New/g' file

5行目から最終行までのOldNewに置換

sed -e 's/<tab>/<space>/g' file

タブをスペースに置換

sed -e 's/<space><space>*/<space>/g' file

複数のスペースを1個のスペースに変換

sed -e 's/[<space><tab>][<tab><space>]*/<space>/g'
file

タブが入っているかスペースが入っているかわからない、またはタブとスペースが混在している場合(これをホワイトスペースと言う)に、1個のスペースに変換

削除

sed -e "s/DelString//g" file

fileの中のDelStringの文字列を削除

sed -e "s/^DelString//" file

fileの中の行頭DelStringの文字列を削除

sed -e "s/DelString\$//" file

fileの中の行末DelStringの文字列を削除(\はエスケープ文字)

sed -e '5,$s/Old/New/g' file

行頭のホワイトスペースを削除

sed -e 's/^[<space><tab>]*//g' file

タブをスペースに置換

sed -e 's/[<space><tab>]*$//g' file

行末のホワイトスペースを削除

sed -e "/String/d"

文字列Stringを含む行を削除

sed -e '/^$/d'

空白行を削除(先頭と行末の間に何もない行を削除)

sed -e '1d'
file

1行目を削除

sed -e '1,4d'
file

1行目から4行目を削除

sed -e '$d'
file

最終行のみを削除

sed -e 's/#.*//' file(.は任意の1文字)

全てのコメントの削除

sed -e '/START/,/END/d' file

ファイル中のSTARTからEND(複数行)までを削除

追加

sed -e "s/add/add123/g" file

fileの中の全てのadd123追加

sed -e "s/^/add/" file

fileの中の全ての行頭addを追加

sed -e "s/\$/add/" file

fileの中の全ての行末addを追加

表示

sed -n '2p' file

ファイルの2行目を表示

sed -n '2,5p'
file

ファイルの25行目を表示

sed -n '$p'
file

ファイルの最終行を表示

sed -n '10q'
file

ファイルの1行目から10行目までを表示

sed -n -e
"s/Old/New/
gp"
file

ファイル内の全OldNew置換置換行のみを表示

sed -n '/START/,/END/p' file

ファイル中のSTARTからEND(複数行)までを表示

sed -n '/START/,/END/!p' file

ファイル中のSTARTからEND(複数行)までを表示しない

ワイルドカード

sed -e "s/^...//" file

fileの行頭の3文字を削除

sed -e "s/a*//" file

fileの中のaが続く文字列を削除(abcはbc、aaaやaaaaaが削除される)

sed -e "s/.*//" file

fileの全ての行を削除

sed -e "s/pattern.*//" file

fileの全ての行のpattern以降の文字列を削除

sed -e "s/pattern1.*pattern2//" file

fileの全ての行のpattern1pattern2に挟まれる任意の文字列を削除

id | sed -e 's/uid=//' -e 's/(.*//'

文字列「uid=1001(user)
gid=1000(usergrp)」
から1001のみを切り出す

id | sed -e 's/uid=.*(\(.*\)) gid=.*/\1/'

文字列「uid=1001(user)
gid=
1000(usergrp)」からuserのみを切り出す

 

1番目の.*は、1001を示す

2番目の.*は、userを示す

3番目の.*は、1000(usergrp)を示す

ここで切り出す項目はuserであり、上記1~3番目の項目の第1項目が該当する。したがって「\1」と指定する

grep -n '.*' | sort -n -r | sed 's/^[0-9]*://'

fileの内容を後ろの行から表示

 

grep -nで行番号を表示

sortで行番号を逆から表示

sedで行番号を削除

sed -e "s/abc\/df/AAA/p" file

「abc/df」を「AAA」に置換する場合は、\を使用する

sed -e "s%abc/ef%AAA%g" file

「abc/df」を「AAA」に置換

上記sed例のように「/」をデリミタと使用せず、任意のデリミタ(左記は%を使用)を指定すれば\を使う必要がない

 

 

きのむくまんま さんのHP
http://www.geocities.jp/abandonment_cat/cygwin/bshell/filter.html より

 

 

 

とりさん プロフィール
無料メルマガに参加する
問い合わせ
無料メルマガ登録
無料プレゼント
最近の投稿
メタ情報
カテゴリー
アーカイブ
お客様がかってに買っていく 何も売らないアフィリエイト
WOrdPressテンプレート

お勧め書籍
無料メルマガ登録