戻る

gnuのsedコマンドのマニュアル。

================================
名前
       sed - ストリームエディタ

書式
       sed [-n] [-V] [--quiet] [--silent] [--version] [--help]
           [-e script] [--expression=script]
           [-f script-file] [--file=script-file]
           [script-if-no-other-script]
           [file...]

説明
       sed はストリームエディタである。ストリームエディタは、入力
       ストリーム (ファイルまたはパイプラインからの入力) に対して
       基 本的なテキスト変換を行うために用いられる。 sed は編集ス
       クリプトを使える (ed のような) エディタといろいろな面で 似
       ているが、 sed は入力に対して 1 パスだけで動作するので、よ
       り効率的である。また sed はパイプラインのテキストに対し て
       フィルタ動作を行うことができ、この点は他のタイプのエディタ
       とはっきり違う。

オプション
       sed の起動時には以下のコマンドラインオプションを指定 で き
       る。

       -V

       --version
              sed のバージョン・著作権表示を出力し、終了する。

       -h

       --help  コマンドラインオプションを簡単にまとめた利用法とバ
              グレポート先のアドレスを出力し、終了する。

       -n

       --quiet

       --silent
              デフォルトでは、 sed はスクリプトの各サイクルの最後
              で パ ター ンスペースの内容を出力する。これらのオプ
              ションを指定するとこの自動的な出力が行われ な く な
              り、 p コマンドで出力することを指定された場合に限っ
              て sed は出力を生成する。

       -e script

       --expression=script
              script のコマンドを、入力の処理中に行われるコマンド
              セットに追加する。

       -f script-file

       --file=script-file
              ファイル script-file に含まれるコマンドを、入力の処
              理中に行われるコマンドセットに追加する。

       -e, -f, --expression, --file などのオプションがコマンド ラ
       インから全く与えられなかった場合は、コマンドラインの引き数
       のうち、オプションでない最初のものが script として受け取ら
       れ、実行される。

       以上のコマンドラインパラメータを処理したあとに引き数が残っ
       た場合は、それらは処理対象となる入力ファイルのファイル名と
       解 釈される。 - というファイル名は、標準入力ストリームを参
       照する。ファイル名が全く指定されなかった場合は標準入力を処
       理する。

コマンドの文法
       これは sed コマンドのごく簡単な文法で、既に sed を知ってい
       る人に対する備忘録程度のものである。完全な記述を求める場合
       は他の文書 (texinfo 文書など) にあたること。

   アドレスを取らないコマンド
       : label
              b コマンドと t コマンド用のラベル。

       #comment
              次 の改行文字まで (あるいは -e スクリプトフラグメン
              トの末尾まで) をコメントとして取り扱う。

       }      { } ブロックの閉じ括弧。

   アドレスを 0 または 1 個とるコマンド
       =      現在の行番号を表示する。

       a \

       text   text を追加する。 text に改行を含めたい場合は、その
              前にバックスラッシュを置く。

       i \

       text   text を挿入する。 text に改行を含めたい場合は、その
              前にバックスラッシュを置く。

       q      これ以上入力の処理を行わず、ただちに sed スクリプト
              の 処理を終了する。ただし auto-print が diable され
              ていなければ、カレントのパターンスペースが出力さ れ
              る。

       r filename
              テキストを filename から読んで追加する。

   アドレス範囲をとりうるコマンド
       {      コマンドブロックの開始 (} で終了する)。

       b label
              label に分岐する。 label が省略された場合は、スクリ
              プトの末尾に分岐する。

       t label
              最後に入力行が読まれ、最後に t コマンドが行われて以
              降 に  s///   が成功していれば、 label に分岐する。
              label が省略された場合は、スクリプトの末尾に分岐 す
              る。

       c \

       text    選択した行を text で置換する。 text に改行を含めた
              い場合は、その前にバックスラッシュを置く。

       d      パターンスペースを削除する。次のサイクルを 開 始 す
              る。

       D       パターンスペースの最初の改行までを削除する。次のサ
              イクルを開始するが、パターンスペースにまだデータ が
              残っていたら、入力からの読み込みをスキップする。

       h H     パ ターンスペースをホールドスペースにコピー/追加す
              る。

       g G    ホールドスペースをパターンスペースにコピー/追 加 す
              る。

       x       ホー ル ドスペースとパターンスペースの内容を交換す
              る。

       l      現在の行を「視覚的に紛れのない」形式でリストする。

       n N    入力の次の行をパターンスペースに読み込む/追加する。

       p      現在のパターンスペースを出力する。

       P      現在のパターンスペースの最初の改行までを出力する。

       s/regexp/replacement/
              パ ターンスペースに対して regexp のマッチを試みる。
              マッチに成功すると、マッチした部分を replacement に
              置 換する。 replacement は特殊文字である & を含むこ
              とができ、これはパターンスペースのマッチした部分 を
              参 照する。また \1 から \9 までの特殊エスケープを含
              むこともでき、これは regexp の副表 現  (sub-expres-
              sion) にマッチした部分をそれぞれ参照する。

       w      現在のパターンスペースを filename に書く。

       y/source/dest/
              パ ターンスペースにある文字のうち、 source にあるも
              のを、 dest の同じ位置にある文字に交換する。

アドレス
       sed のコマンドはアドレスを指定せずに与えることもでき、この
       場合そのコマンドはすべての入力行に対して実行される。アドレ
       スをひとつ与えると、コマンドはそのアドレスにマッチした入力
       行 に対してのみ実行される。 2 つのアドレスを与えると、最初
       のアドレスにマッチした行から、 2 番目のアドレスにマッチ し
       た行に至る範囲 (両マッチ行を含む) にあるすべての行に対して
       実行される。アドレスの範囲指定については 3 つのことを注 意
       し ておく。まず指定方法は addr1,addr2 である (つまりアドレ
       スをコンマで区切る)。 addr1 にマッチした行は、たとえ addr2
       が よ り 前 の行にマッチした場合でも、常に処理対象となる。
       addr2 が regexp (正規表現) の場合には、 addr1 にマッチした
       行に対しては addr2 のマッチは行われない。

       アドレス (あるいはアドレス範囲) とコマンドの間には !  を挟
       むことができる。この場合は、アドレス (あるいはアドレ ス 範
       囲) がマッチしなかった行に対してのみコマンドが実行される。

       以下のアドレスタイプがサポートされている。

       number number で指定した行だけにマッチする。

       first~step
              first 行からはじまる step 行おきの行にマッチす る。
              例 え ば ``sed -n 1~2p'' は入力行のうち奇数行を表示
              し、アドレスを 2~5 にすると、第 2 行から 5 行おきに
              表示する (これは GNU の拡張である)。

       $      最終行にマッチする。

       /regexp/
              正規表現 regexp にマッチした行にマッチする。

       \cregexpc
              正 規表現 regexp にマッチした行にマッチする。文字 c
              は何でもよい。

正規表現
       POSIX.2 BRE をサポートすべきであるが、まだ完全にはサポート
       できていない。正規表現内部の \n シーケンスは改行文字にマッ
       チする。 GNU 拡張も存在する。 [要修正: より詳細を記述す る
       必要がある。少なくとも、何がサポートされているかを述べた、
       他の文書へのリファレンスが必要である]

その他の注意
       このバージョンの sed は、あらゆる正規表現の内部・置換コ マ
       ン ドの replacement の内部・文字交換 (y) コマンドの source
       および dest の内部のいずれにおいても、 \ と い う
       シーケンスが使える。

関連項目
       awk(1),  ed(1),  expr(1), emacs(1), perl(1), tr(1), vi(1),
       regex(5) [うーん、書かないとダメですねえ] 【訳注: LDP には
       regex(7)  があります】, sed.info, sed に関する様々な本のい
       ずれか, the sed FAQ (http://www.wollery.demon.co.uk/sed-
       tut10.txt, http://www.ptug.org/sed/sedfaq.htm).

バグ
       バグレポートは bug-gnu-utils@gnu.org まで送って下さい。
       「Subject:」フィールドのどこかに「sed」という単語を入れる
       ようにして欲しい。

#############################################
個人的メモ:
改行をスペースに置換
       sed ':loop; N; $!b loop; s/\n/ /g'