アットウィキロゴ

sed

「sed」の編集履歴(バックアップ)一覧はこちら

sed - (2009/02/06 (金) 13:49:01) の1つ前との変更点

追加された行は緑色になります。

削除された行は赤色になります。

sed 活用法 2006/07/03 sed - stream editor 一行づつ非対話的にテキスト処理(フィルタ処理)を行う。処理後は標準出力へ。 起動法 sed $$command$$ コマンドが1つの場合 sed -e command1 -e command2 コマンドが複数ある場合 sed 'command1;command2;..'     (同上) sed -f command_file -----command_file---- command1 command2 .. --------------------- コマンド形式 [ address1 [, address2 ] ] function address1のみ指定:そのパターンにマッチする行のみ functionを適用。 address1とaddress2を指定:address1にマッチする行からaddress2にマッチする行までに対し fucntionを適用。 複数のfunctionは{ function1 fucntion2 ... } sedのアドレス指定 | アドレス| 意味| | line-number| line-numberで指定された行| | $| 最後の行| | /regular-expression/ | 正規表現 regular-expression にマッチした行 | 例) 10p 10行目にp関数を適用 /^a/,/^b/p aではじまる行からbではじまる行までp関数を適用 p すべての行にp関数を適用 基本的な関数 d - delete 削除  例 cat hoge.txt | sed '/^END/,/^BEGIN/d' ... ENDとBEGINで囲まれた行を削除  (Windows上では、' とか `はだめで、" が使用可。GNU sed 3.02) p - print 表示  -n オプションで処理結果の標準出力を抑制した場合、pで表示(パターンにマッチ行だけを選択的に出力)  例 cat -n words | sed -n '100,150p' 100行目から150行目を表示   q - quit 途中で終了  例 上記で105行目を出力後、sedを終了した方が早く処理を終え得る。  % time cat -n words | sed -n '100,150p'  % time cat -n words | sed -n -e '100,150p' -e '105q' s - substitute 置換 s / regular-expression / replacement / flags  regular-expressionにマッチする最初の文字列をreplacementで置換 |フラグ|意味| |g| 正規表現にマッチする文字列すべてを置換(defaultでは最初のみ)| |p| マッチした場合に行を出力|    マッチする文字列の参照  数値をN=数値 という形式に置換   s/\([0-9][0-9]*\)/N=\1/   s/\([0-9][0-9]*\)/N=&/ &でマッチする文字列全体    % who am i  mari ttyp7 Dec 24 02:26 (pkm)    who am i | sed 's/^.*(\(.*\)).*$/\1/' => pkm    mv コマンドで .c を.ccに一括変換  ls *.c | sed -n 's/\(.*\)\.c$/mv & \1.cc/p' 照準出力に表示のみ  ls *.c | sed -n 's/\(.*\)\.c$/mv & \1.cc/p' | sh 出力結果をshに渡して実際にmvを実行   y - transform 変換 y / old-strings / new-strings /  文字単位で置換 trコマンドに同じ。  y/aiueo/AIUEO/   高度なsed関数 (1)分岐  :label ジャンプ先ラベルを定義  b label ラベルlabelに分岐 branch  t label 直前のs関数の置換が成功していれば、ラベルに分岐 test  eg) cat palindrome  s/^.*$/&@@&/ 行を単語@@単語 に変換  :Loop   s/^\(.\)\(.*\)@\([^@]*)@\(.*\)/\2@\1\3@\4/ 行頭の文字を最初の@の後に挿入  t Loop 置換が失敗するまで繰り返し  s/^.\([^@][^@]}\)@\1/\1/p 2つの単語が一致していれば出力 (2)中間結果の保存  sedの入力行はパターンスペースに保存され、置換などの処理はパターンスペースに対して行われる。このほか、ホールドスペースという領域があり、処理中の行を一時的に置き、パターンスペースに取り出すことができる。 pattern spaceとhold spaceの操作 | 関数 | 動作| | h| pattern spaceをhold spaceにコピー| | g| hold space をpattern space にコピー|    処理の流れ  ・入力行をパターンスペースに(自動的)  ・パターンスペースをホールどスペースに  ・パターンスペースを処理し、出力  ・ホールドスペースをパターンスペースへ  ・パターンスペースを別の処理をし、出力    cat words 単語を1つづつ取り出す    :Loop   s/^[^A-Za-z]*// 行頭の非英文文字を削除   sh   s/^\([A-Za-z][A-Za-z0-9]*\).*/\1/p 行頭の単語以降の文字を削除して表示   g   s/-[A-Za-z][A-Za-z0-9]*// 行頭の単語を削除  /./b Loop 行が空になるまで繰り返す。
sed 活用法 2006/07/03 sed - stream [[editor]] 一行づつ非対話的にテキスト処理(フィルタ処理)を行う。処理後は標準出力へ。 起動法 sed $$command$$ コマンドが1つの場合 sed -e command1 -e command2 コマンドが複数ある場合 sed 'command1;command2;..'     (同上) sed -f command_file -----command_file---- command1 command2 .. --------------------- コマンド形式 [ address1 [, address2 ] ] function address1のみ指定:そのパターンにマッチする行のみ functionを適用。 address1とaddress2を指定:address1にマッチする行からaddress2にマッチする行までに対し fucntionを適用。 複数のfunctionは{ function1 fucntion2 ... } sedのアドレス指定 | アドレス| 意味| | line-number| line-numberで指定された行| | $| 最後の行| | /regular-expression/ | 正規表現 regular-expression にマッチした行 | 例) 10p 10行目にp関数を適用 /^a/,/^b/p aではじまる行からbではじまる行までp関数を適用 p すべての行にp関数を適用 基本的な関数 d - delete 削除  例 cat hoge.txt | sed '/^END/,/^BEGIN/d' ... ENDとBEGINで囲まれた行を削除  (Windows上では、' とか `はだめで、" が使用可。GNU sed 3.02) p - print 表示  -n オプションで処理結果の標準出力を抑制した場合、pで表示(パターンにマッチ行だけを選択的に出力)  例 cat -n words | sed -n '100,150p' 100行目から150行目を表示   q - quit 途中で終了  例 上記で105行目を出力後、sedを終了した方が早く処理を終え得る。  % time cat -n words | sed -n '100,150p'  % time cat -n words | sed -n -e '100,150p' -e '105q' s - substitute 置換 s / regular-expression / replacement / flags  regular-expressionにマッチする最初の文字列をreplacementで置換 |フラグ|意味| |g| 正規表現にマッチする文字列すべてを置換(defaultでは最初のみ)| |p| マッチした場合に行を出力|    マッチする文字列の参照  数値をN=数値 という形式に置換   s/\([0-9][0-9]*\)/N=\1/   s/\([0-9][0-9]*\)/N=&/ &でマッチする文字列全体    % who am i  mari ttyp7 Dec 24 02:26 (pkm)    who am i | sed 's/^.*(\(.*\)).*$/\1/' => pkm    mv コマンドで .c を.ccに一括変換  ls *.c | sed -n 's/\(.*\)\.c$/mv & \1.cc/p' 照準出力に表示のみ  ls *.c | sed -n 's/\(.*\)\.c$/mv & \1.cc/p' | sh 出力結果をshに渡して実際にmvを実行   y - transform 変換 y / old-strings / new-strings /  文字単位で置換 trコマンドに同じ。  y/aiueo/AIUEO/   高度なsed関数 (1)分岐  :label ジャンプ先ラベルを定義  b label ラベルlabelに分岐 branch  t label 直前のs関数の置換が成功していれば、ラベルに分岐 test  eg) cat palindrome  s/^.*$/&@@&/ 行を単語@@単語 に変換  :Loop   s/^\(.\)\(.*\)@\([^@]*)@\(.*\)/\2@\1\3@\4/ 行頭の文字を最初の@の後に挿入  t Loop 置換が失敗するまで繰り返し  s/^.\([^@][^@]}\)@\1/\1/p 2つの単語が一致していれば出力 (2)中間結果の保存  sedの入力行はパターンスペースに保存され、置換などの処理はパターンスペースに対して行われる。このほか、ホールドスペースという領域があり、処理中の行を一時的に置き、パターンスペースに取り出すことができる。 pattern spaceとhold spaceの操作 | 関数 | 動作| | h| pattern spaceをhold spaceにコピー| | g| hold space をpattern space にコピー|    処理の流れ  ・入力行をパターンスペースに(自動的)  ・パターンスペースをホールどスペースに  ・パターンスペースを処理し、出力  ・ホールドスペースをパターンスペースへ  ・パターンスペースを別の処理をし、出力    cat words 単語を1つづつ取り出す    :Loop   s/^[^A-Za-z]*// 行頭の非英文文字を削除   sh   s/^\([A-Za-z][A-Za-z0-9]*\).*/\1/p 行頭の単語以降の文字を削除して表示   g   s/-[A-Za-z][A-Za-z0-9]*// 行頭の単語を削除  /./b Loop 行が空になるまで繰り返す。

表示オプション

横に並べて表示:
変化行の前後のみ表示:
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。