\input texinfo  @c -*-texinfo-*-
@c %**start of header
@setfilename sed-ja.info
@settitle sed, a stream editor
@c %**end of header

@c @documentlanguage ja

@c This file has the new style title page commands.
@c Run `makeinfo' rather than `texinfo-format-buffer'.

@c smallbook

@c tex
@c \overfullrule=0pt
@c end tex

@include sed-v.texi

@c Combine indices.
@syncodeindex ky cp
@syncodeindex pg cp
@syncodeindex tp cp

@defcodeindex op
@syncodeindex op fn

@ifinfo
@direntry
* sed(ja): (sed-ja).                   Stream EDitor.
@end direntry
This file documents @sc{sed}, a stream editor.

このファイルは，ストリームエディタ@sc{sed}を説明します．


Published by the Free Software Foundation,
59 Temple Place - Suite 330
Boston, MA 02111-1307, USA

Copyright (C) 1998 Free Software Foundation, Inc.

Permission is granted to make and distribute verbatim copies of
this manual provided the copyright notice and this permission notice
are preserved on all copies.

@ignore
Permission is granted to process this file through TeX and print the
results, provided the printed document carries copying permission
notice identical to this one except for the removal of this paragraph
(this paragraph not being relevant to the printed manual).

@end ignore
Permission is granted to copy and distribute modified versions of this
manual under the conditions for verbatim copying, provided that the entire
resulting derived work is distributed under the terms of a permission
notice identical to this one.

Permission is granted to copy and distribute translations of this manual
into another language, under the above conditions for modified versions,
except that this permission notice may be stated in a translation approved
by the Foundation.
@end ifinfo

@setchapternewpage off

@titlepage
@title sed, a stream editor
@subtitle version @value{VERSION}, @value{UPDATED}
@author by Ken Pizzini
@c 翻訳：西尾 太

@page
@vskip 0pt plus 1filll
Copyright @copyright{} 1998 Free Software Foundation, Inc.

@sp 2
Published by the Free Software Foundation, @*
59 Temple Place - Suite 330, @*
Boston, MA 02111-1307, USA

Permission is granted to make and distribute verbatim copies of
this manual provided the copyright notice and this permission notice
are preserved on all copies.

Permission is granted to copy and distribute modified versions of this
manual under the conditions for verbatim copying, provided that the entire
resulting derived work is distributed under the terms of a permission
notice identical to this one.

Permission is granted to copy and distribute translations of this manual
into another language, under the above conditions for modified versions,
except that this permission notice may be stated in a translation approved
by the Foundation.

@end titlepage
@page


@node Top, Introduction, (dir), (dir)
@comment  node-name,  next,  previous,  up

@ifinfo
@c This document was produced for version @value{VERSION} of @sc{GNU} @sc{sed}.
@c 
このドキュメントは，@sc{gnu} @sc{sed}のバージョン@value{VERSION}に対して
作成されました．
@end ifinfo

@menu
* Introduction::                Introduction
* Invoking SED::                Invocation
* sed Programs::                @sc{sed} programs
* Examples::                    Some sample scripts
* Limitations::                 About the (non-)limitations on line length
* Other Resources::             Other resources for learning about @sc{sed}
* Reporting Bugs::              Reporting bugs
* Concept Index::               A menu with all the topics in this manual.
* Command and Option Index::    A menu with all @sc{sed} commands and
                                 command-line options.
@end menu


@node Introduction, Invoking SED, Top, Top
@chapter はじめに

@cindex Stream editor
@c @sc{sed} is a stream editor.
@c A stream editor is used to perform basic text
@c transformations on an input stream
@c (a file or input from a pipeline).
@c While in some ways similar to an editor which
@c permits scripted edits (such as @sc{ed}),
@c @sc{sed} works by making only one pass over the
@c input(s), and is consequently more efficient.
@c But it is @sc{sed}'s ability to filter text in a pipeline
@c which particularly distinguishes it from other types of
@c editors.
@c 
@sc{sed}はストリームエディタです．ストリームエディタとは，入力のストリー
ム(ファイルやパイプラインからの入力)で，基本的なテキスト変換を実行するた
めに使用されます．(@sc{ed}のように)スクリプトで編集可能なエディタに似た
ところもありますが，@sc{sed}は入力を1回のみ通過させることで動作し，その
ためより効率的になっています．しかし，他の形式のエディタと特に区別される
点として，パイプラインでテキストにフィルタをかける能力が@sc{sed}にはあり
ます．

@node Invoking SED, sed Programs, Introduction, Top
@chapter 呼び出し

@c @sc{sed} may be invoked with the following command-line options:
@c 
@sc{sed}は，以下のコマンドラインオプションを続けて呼び出すことが可能です．

@table @samp
@item -V
@itemx --version
@opindex -V
@opindex --version
@cindex Version, printing
@c Print out the version of @sc{sed} that is being run and a copyright notice,
@c then exit.
@c 
実行している@sc{sed}のバージョンと著作権の注意を出力し終了します．

@item -h
@itemx --help
@opindex -h
@opindex --help
@cindex Usage summary, printing
@c Print a usage message briefly summarizing these command-line options
@c and the bug-reporting address,
@c then exit.
@c 
これらのコマンドラインオプションを要約した，短い使用方法のメッセージとバ
グを報告するアドレスを出力し終了します．

@item -n
@itemx --quiet
@itemx --silent
@opindex -n
@opindex --quiet
@opindex --silent
@c By default, @sc{sed} will print out the pattern space
@c at then end of each cycle through the script.
@c These options disable this automatic printing,
@c and @sc{sed} will only produce output when explicitly told to
@c via the @code{p} command.
@c 
デフォルトで@sc{sed}は，スクリプトのそれぞれの繰り返しの終了時にパターン
スペースを出力します．これらのオプションで，この自動的な出力を使用不可能
にし，@sc{sed}は@code{p}コマンドで明示的に告げるときだけ出力を生成します．

@item -e @var{script}
@itemx --expression=@var{script}
@opindex -e
@opindex --expression
@cindex Script, from command line
@c Add the commands in @var{script} to the set of commands to be
@c run while processing the input.
@c 
@var{script}のコマンドを，入力を処理している間に実行するコマンドの組に追
加します．

@item -f @var{script-file}
@itemx --file=@var{script-file}
@opindex -f
@opindex --file
@cindex Script, from a file
@c Add the commands contained in the file @var{script-file}
@c to the set of commands to be run while processing the input.
@c 
ファイル@var{script-file}に含まれているコマンドを，入力を処理している間
に実行するコマンドの組に追加します．

@end table

@c If no @code{-e}, @code{-f}, @code{--expression}, or @code{--file}
@c options are given on the command-line,
@c then the first non-option argument on the command line is
@c taken to be the @var{script} to be executed.
@c 
@code{-e}，@code{-f}，@code{--expression}，または@code{--file}オプション
がコマンドラインで全く与えられていない場合，コマンドライン上の最初のオプ
ションではない引数が実行するスクリプトとして渡されます．

@cindex Files to be processed as input
@c If any command-line parameters remain after processing the above,
@c these parameters are interpreted as the names of input files to
@c be processed.
@c 
コマンドラインのパラメータが上記のものを処理した後に残っている場合，これ
らのパラメータは処理される入力ファイルの名前として解釈されます．
@cindex Standard input, processing as input
@c A file name of @code{-} refers to the standard input stream.
@c The standard input will processed if no file names are specified.
@c 
@code{-}であるファイル名は，標準入力を参照します．ファイル名が指定されて
いない場合，標準入力が処理されます．

@node sed Programs, Examples, Invoking SED, Top
@chapter @sc{sed}プログラム

@cindex @sc{sed} program structure
@cindex Script structure
@c A @sc{sed} program consists of one or more @sc{sed} commands,
@c passed in by one or more of the
@c @code{-e}, @code{-f}, @code{--expression}, and @code{--file}
@c options, or the first non-option argument if zero of these
@c options are used.
@c This document will refer to ``the'' @sc{sed} script;
@c this will be understood to mean the in-order catenation
@c of all of the @var{script}s and @var{script-file}s passed in.
@c 
@sc{sed}プログラムは，一つ以上の@sc{sed}コマンド，一つ以上の@code{-e}，
@code{-f}，@code{--expression}，そして@code{--file}オプションや，これら
のオプションが使用されていない場合は最初のオプションではない引数で渡され
るものから成り立っています．このドキュメントは``その''@sc{sed}スクリプト
を記述します．渡される@var{script}と@var{script-file}の全て連結したもの
の意味はこれで理解できるでしょう．

@c Each @sc{sed} command consists of an optional address or
@c address range, followed by a one-character command name
@c and any additional command-specific code.
@c 
それぞれの@sc{sed}コマンドは，オプションのアドレスやアドレスの幅から成り
立っていて，それには1文字のコマンド名と追加のコマンド特有のコードが続き
ます．

@menu
* Addresses::                Selecting lines with @sc{sed}
* Regular Expressions::      Overview of regular expression syntax
* Data Spaces::              Where @sc{sed} buffers data
* Common Commands::          Often used commands
* Other Commands::           Less frequently used commands
* Programming Commands::     Commands for die-hard @sc{sed} programmers
@end menu


@node Addresses, Regular Expressions, sed Programs, sed Programs
@section @sc{sed}で行を選択する
@cindex Addresses, in @sc{sed} scripts
@cindex Line selection
@cindex Selecting lines to process

@c Addresses in a @sc{sed} script can be in any of the following forms:
@c 
@sc{sed}スクリプトのアドレスは，以下の形式のどれでも可能です．
@table @samp
@item @var{number}
@cindex Address, numeric
@cindex Line, selecting by number
@c Specifying a line number will match only that line in the input.
@c (Note that @sc{sed} counts lines continuously across all input files.)
@c 
行番号の指定は，入力のその行にのみマッチします．(@sc{sed}は全ての入力行
を跨って連続して行を数えることに注意してください．)

@item @var{first}~@var{step}
@cindex @sc{gnu} extensions, @code{@var{n}~@var{m}} addresses
@c This @sc{GNU} extension matches every @var{step}th line
@c starting with line @var{first}.
@c In particular, lines will be selected when there exists
@c a non-negative @var{n} such that the current line-number equals
@c @var{first} + (@var{n} * @var{step}).
@c Thus, to select the odd-numbered lines,
@c one would use @code{1~2};
@c to pick every third line starting with the second, @code{2~3} would be used;
@c to pick every fifth line starting with the tenth, use @code{10~5};
@c and @code{50~0} is just an obscure way of saying @code{50}.
@c 
この@sc{gnu}の拡張は，行@var{first}で始まり@var{step}番目の毎の行にマッ
チします．特に，負ではない@var{n}が存在するとき，現在の行番号が
@var{first} + (@var{n} * @var{step})になる行が選択されます．このため，偶
数行を選択するため，@code{1~2}を使用することになるでしょう．2行目から始
まり3行毎に取り上げるため，@code{2~3}を使用することになるでしょう．10行
目から始まり5行毎に取り上げるため，@code{10~5}を使用することになるでしょ
う．そして，@code{50~0}は@code{50}告げる曖昧な方法にすぎません．

@item $
@cindex Address, last line
@cindex Last line, selecting
@cindex Line, selecting last
@c This address matches the last line of the last file of input.
@c 
このアドレスは，入力の最後のファイルの最後の行にマッチします．

@item /@var{regexp}/
@cindex Address, as a regular expression
@cindex Line, selecting by regular expression match
@c This will select any line which matches the regular expression @var{regexp}.
@c If @var{regexp} itself includes any @code{/} characters,
@c each must be escaped by a backslash (@code{\}).
@c 
正規表現@var{regexp}に一致する全ての行を選択します．@var{regexp}自身に
@code{/}文字が含まれる場合，それぞれをバックスラッシュ(@code{\})でエスケー
プする必要が有ります．

@item \%@var{regexp}%
@c (The @code{%} may be replaced by any other single character.)
@c 
(@code{%}はその他全ての単一の文字で置換してもかまいません．)

@cindex Slash character, in regular expressions
@c This also matches the regular expression @var{regexp},
@c but allows one to use a different delimiter than @code{/}.
@c This is particularly useful if the @var{regexp} itself contains
@c a lot of @code{/}s, since it avoids the tedious escaping of every @code{/}.
@c If @var{regexp} itself includes any delimiter characters,
@c each must be escaped by a backslash (@code{\}).
@c 
これは正規表現@var{regexp}にも一致しますが，これで@code{/}以外の分離文字
を使用することが可能になります．@var{regexp}自身が大量の@code{/}を含んで
いる場合，個々の@code{/}をエスケープするのも退屈なので，それを避けるため
に特に役に立ちます．@var{regexp}自身が分離文字を含んでいる場合，それぞれ
をバックスラッシュ(@code{\})でエスケープする必要が有ります．

@item /@var{regexp}/I
@itemx \%@var{regexp}%I
@cindex @sc{gnu} extensions, @code{I} modifier
@c The @code{I} modifier to regular-expression matching is a @sc{GNU}
@c extension which causes the @var{regexp} to be matched in
@c a case-insensitive manner.
@c 
正規表現にマッチさせるための@code{I}指示語は@sc{gnu}の拡張で，
@var{regexp}は大文字小文字を無視してマッチします．

@end table

@c If no addresses are given, then all lines are matched;
@c if one address is given, then only lines matching that
@c address are matched.
@c 
アドレスが与えられていない場合全ての行がマッチします．一つのアドレスが与
えられている場合，マッチする行はアドレスがマッチしたものだけになります．

@cindex Range of lines
@cindex Several lines, selecting
@c An address range can be specified by specifying two addresses
@c separated by a comma (@code{,}).
@c An address range matches lines starting from where the first
@c address matches, and continues until the second address matches
@c (inclusively).
@c If the second address is a @var{regexp}, then checking for the
@c ending match will start with the line @emph{following} the
@c line which matched the first address.
@c If the second address is a @var{number} less than (or equal to)
@c the line matching the first address,
@c then only the one line is matched.
@c 
アドレスの範囲はカンマ(@code{,})で分けられている2つのアドレスで指定する
ことで指定可能です．アドレスの範囲は最初のアドレスにマッチしている行から
始まり，2番目のアドレス(これは含まれます)にマッチするまで続きます．2番目
のアドレスが正規表現の場合，マッチの終りの調査は，最初のアドレスにマッチ
した行の@emph{次の}行から開始されます．2番目の引数が@var{number}で最初に
マッチした行のアドレスより小さい(または同じ)場合，一行のみマッチします．

@cindex Excluding lines
@cindex Selecting non-matching lines
@c Appending the @code{!} character to the end of an address
@c specification will negate the sense of the match.
@c That is, if the @code{!} character follows an address range,
@c then only lines which do @emph{not} match the address range
@c will be selected.
@c This also works for singleton addresses,
@c and, perhaps perversely, for the null address.
@c 
アドレス指定の終りに@code{!}文字を後置するとマッチの意味が否定されます．
すなわち，@code{!}はアドレスの範囲に続いている場合，選択されたアドレスの
範囲にマッチ@emph{しない}行だけが選択されます．これは一つのアドレスに対
しても動作し，おそらくひねくれているだけでしょうが，何もないアドレスに対
しても動作します．


@node Regular Expressions, Data Spaces, Addresses, sed Programs
@section 正規表現の構文の概要

@c XXX FIXME
@c [[I may add a brief overview of regular expressions at a later date;
@c for now see any of the various other documentations for regular
@c expressions, such as the @sc{awk} info page.]]
@c 
[[後日，正規表現の短い概要を追加するかもしれません．今は@sc{awk}のinfoペー
ジのような，他の様々な正規表現のドキュメントを参照してください．]]

@node Data Spaces, Common Commands, Regular Expressions, sed Programs
@section @sc{sed}バッファのデータが有る場所

@cindex Buffer spaces, pattern and hold
@cindex Spaces, pattern and hold
@cindex Pattern space, definition
@cindex Hold space, definition
@c @sc{sed} maintains two data buffers: the active @emph{pattern} space,
@c and the auxiliary @emph{hold} space.
@c In ``normal'' operation, @sc{sed} reads in one line from the
@c input stream and places it in the pattern space.
@c This pattern space is where text manipulations occur.
@c The hold space is initially empty, but there are commands
@c for moving data between the pattern and hold spaces.
@c 
@sc{sed}は2つのデータバッファを管理しています．アクティブな@emph{パター
ン}スペースと，補助的な@emph{ホールド}スペースです．``通常の''処理では，
@sc{sed}は入力ストリームから1行読み込み，それをパターンスペースに配置し
ます．このパターンスペースはテキスト操作が生じる場所です．ホールドスペー
スは最初は空ですが，パターンスペースとホールドスペースの間でデータを移動
するコマンドが有ります．

@c XXX FIXME: explain why this is useful/interesting to know.


@node Common Commands, Other Commands, Data Spaces, sed Programs
@section よく使用されるコマンド

@c If you use @sc{sed} at all, you will quite likely want to know
@c these commands.
@c 
本当に@sc{sed}を使用するのなら，きっとこれらのコマンドを知りたいと思うで
しょう．

@table @samp
@item #
@c [No addresses allowed.]
@c 
[アドレスは利用不可能です．]

@findex # (comment) command
@cindex Comments, in scripts
@c The @code{#} ``command'' begins a comment;
@c the comment continues until the next newline.
@c 
@code{#}``コマンド''はコメントを開始します．コメントは次の改行まで続きま
す．

@cindex Portability, comments
@c If you are concerned about portability, be aware that
@c some implementations of @sc{sed} (which are not POSIX.2
@c conformant) may only support a single one-line comment,
@c and then only when the very first character of the script is a @code{#}.
@c 
移植性を心配している場合，@sc{sed}(POSIX.2に準拠していないもの)の実装に
よっては，単一の一行のコメントのみサポートしていて，スクリプトの最初の文
字が@code{#}のときのみのサポートしている可能性があることを覚えておいてく
ださい．

@findex -n, forcing from within a script
@cindex Caveat --- #n on first line
@c Warning: if the first two characters of the @sc{sed} script
@c are @code{#n}, then the @code{-n} (no-autoprint) option is forced.
@c If you want to put a comment in the first line of your script
@c and that comment begins with the letter `n'
@c and you do not want this behavior,
@c then be sure to either use a capital `N',
@c or place at least one space before the `n'.
@c 
警告：@sc{sed}スクリプトの最初の2文字が@code{#n}の場合，@code{-n}(自動的
に出力しない)オプションが強制的に使用されます．スクリプトの最初の行にコ
メントを書き，そしてコメントを文字`n'で開始したい場合で，このように動作
して欲しくない場合は，大文字の`N'を使用するか，`n'の前に少なくとも1つの
スペースを書いてください．


@item s/@var{regexp}/@var{replacement}/@var{flags}
@c (The @code{/} characters may be uniformly replaced by
@c any other single character within any given @code{s} command.)
@c 
(@code{/}文字は@code{s}コマンドで与えられるその他の単一文字で一律に置換
してもかまいません．)

@findex s (substitute) command
@cindex Substitution of text
@cindex Replacing text matching regexp
@c The @code{/} character (or whatever other character is used in its stead)
@c can appear in the @var{regexp} or @var{replacement}
@c only if it is preceded by a @code{\} character.
@c Also newlines may appear in the @var{regexp} using the two
@c character sequence @code{\n}.
@c 
@code{/}文字(または変わりに使用されているその他の文字)は，@code{\}文字を
前置している場合のみ，@var{regexp}や@var{replacement}に書くことが可能で
す．連続する2文字@code{\n}を使用して，改行を@var{regexp}に書いてもかまい
ません．

@c The @code{s} command attempts to match the pattern
@c space against the supplied @var{regexp}.
@c If the match is successful, then that portion of the pattern
@c space which was matched is replaced with @var{replacement}.
@c 
@code{s}コマンドは，提供されている@var{regexp}に対しパターンスペースのマッ
チを試みます．マッチが成功する場合．マッチしたパターンスペースの位置が
@var{replacement}で置換されます．

@cindex Backreferences, in regular expressions
@cindex Parenthesized substrings
@c The @var{replacement} can contain @code{\@var{n}} (@var{n} being
@c a number from 1 to 9, inclusive) references, which refer to
@c the portion of the match which is contained between the @var{n}th
@c @code{\(} and its matching @code{\)}.
@c Also, the @var{replacement} can contain unescaped @code{&}
@c characters which will reference the whole matched portion
@c of the pattern space.
@c To include a literal @code{\}, @code{&}, or newline in the final
@c replacement, be sure to precede the desired @code{\}, @code{&},
@c or newline in the @var{replacement} with a @code{\}.
@c 
@var{replacement}に@code{\@var{n}} (@var{n}は1から9までの数字です)での参
照を含めることが可能で，それは@var{n}番目の@code{\(}とそのマッチと
@code{\)}に含まれているマッチの位置を参照します．また，@var{replacement}
に，パターンスペースのマッチ位置全体を参照する，エスケープされていない
@code{&}文字を含めることも可能です．リテラルの@code{\}，@code{&}，または
改行を最終的な置換物に含めるため，@code{\}を用いて@var{replacement}内の
@code{\}，@code{&}，または改行に，必要となる@code{\}を確実に前置してくだ
さい．

@findex s command, option flags
@cindex Substitution of text, options
@cindex Replacing text matching regexp, options
@c The @code{s} command can be followed with zero or more of the
@c following @var{flags}:
@c 
@code{s}コマンドにはゼロ以上の以下の@var{flags}を続けることが可能です．

@table @samp
@item g
@cindex Global substitution
@cindex Replacing all text matching regexp in a line
@c Apply the replacement to @emph{all} matches to the @var{regexp},
@c not just the first.
@c 
最初のものだけでなく@emph{すべての}@var{regexp}へのマッチを置換します．
@item p
@cindex Printing text after substitution
@c If the substitution was made, then print the new pattern space.
@c 
置換が行なわれた場合，新しいパターンスペースを出力します．
@item @var{number}
@cindex Replacing only @var{n}th match of regexp in a line
@c Only replace the @var{number}th match of the @var{regexp}.
@c 
@var{regexp}の@var{number}番目のマッチのみ置換します．
@item w @var{file-name}
@cindex Write result of a substitution to file
@c If the substitution was made, then write out the result to the named file.
@c 
置換が行なわれた場合，結果を指名されたファイルに書き出します．
@item I
@c (This is a @sc{GNU} extension.)
@c 
(これは@sc{gnu}の拡張です)
@cindex @sc{gnu} extensions, @code{I} modifier
@cindex Case-insensitive matching
@c Match @var{regexp} in a case-insensitive manner.
@c 
大文字小文字を区別しない方法で@var{regexp}にマッチします．
@end table

@item q
@c [At most one address allowed.]
@c 
[最大1つのアドレスが可能です．]

@findex q (quit) command
@cindex Quitting
@c Exit @sc{sed} without processing any more commands or input.
@c Note that the current pattern space is printed
@c if auto-print is not disabled.
@c 
それ以上のコマンドも入力も処理せず@sc{sed}を終了します．自動的な出力が利
用不可能ではない場合，現在のパターンスペースが出力されることに注意してく
ださい．

@item d
@findex d (delete) command
@cindex Deleting lines
@c Delete the pattern space;
@c immediately start next cycle.
@c 
パターンスペースを削除します．すぐに次のサイクルを開始します．

@item p
@findex p (print) command
@cindex Print selected lines
@c Print out the pattern space (to the standard output).
@c This command is usually only used in conjunction with the @code{-n}
@c command-line option.
@c 
パターンスペースを(標準出力に)出力します．通常このコマンドは，@code{-n} 
コマンドラインオプションと組み合わせて使用します．

@cindex Caveat --- @code{p} command and -n flag
@c Note: some implementations of @sc{sed}, such as this one, will
@c double-print lines when auto-print is not disabled and the @code{p}
@c command is given.
@c Other implementations will only print the line once.
@c Both ways conform with the POSIX.2 standard, and so neither
@c way can be considered to be in error.
@c 
注意：このような@sc{sed}の実装では，自動的な出力が利用不可能ではなく，
@code{p}が与えられているとき，出力行が二重になるものもあります．それ以外
の実装では，行は一回のみ出力されます．両方ともPOSIX.2標準に準拠していて，
どちらかをエラーと考えることはできません．

@cindex Portability, @code{p} command and -n flag
@c Portable @sc{sed} scripts should thus avoid relying on either behavior;
@c either use the @code{-n} option and explicitly print what you want,
@c or avoid use of the @code{p} command (and also the @code{p} flag to the
@c @code{s} command).
@c 
このため，移植性の高い@sc{sed}スクリプトでは，どちらかの動作に依存するこ
とはさせるべきです．@code{-n}を使用して出力したいものを明示的にするか，
@code{p}コマンド(と@code{s}コマンドの@code{p}フラグ)の使用をさけてくださ
い．

@item n
@findex n (next-line) command
@cindex Next input line, replace pattern space with
@cindex Read next input line
@c If auto-print is not disabled, print the pattern space,
@c then, regardless, replace the pattern space with the next line of input.
@c If there is no more input then @sc{sed} exits without processing
@c any more commands.
@c 
自動的な出力が利用不可能ではない場合，パターンスペースを出力し，何も考え
ず，パターンスペースを入力の次の行で置換します．それ以上入力がない場合，
@sc{sed}はそれ以上のコマンドを処理せずに終了します．

@item @{ @var{commands} @}
@findex @{@} command grouping
@cindex Grouping commands
@cindex Command groups
@c A group of commands may be enclosed between
@c @code{@{} and @code{@}} characters.
@c (The @code{@}} must appear in a zero-address command context.)
@c This is particularly useful when you want a group of commands
@c to be triggered by a single address (or address-range) match.
@c 
コマンドのグループは，@code{@{}文字と@code{@}}文字で囲んでもかまいません．
コマンドのグループを単一のアドレス(またはアドレスの範囲)のマッチで開始し
たいとき，これは特に役に立ちます．

@end table


@node Other Commands, Programming Commands, Common Commands, sed Programs
@section あまり使用されないコマンド

@c Though perhaps less frequently used than those in the previous
@c section, some very small yet useful @sc{sed} scripts can be built with
@c these commands.
@c 
前のセクションのものより使用されることはおそらく少ないでしょうが，非常に
小さく有用な@sc{sed}スクリプトには，以下のコマンドを組み込むことも可能で
す．

@table @samp
@item y/@var{source-chars}/@var{dest-chars}/
@c (The @code{/} characters may be uniformly replaced by
@c any other single character within any given @code{y} command.)
@c 
(@code{/}文字は，@code{y}コマンドで与えられるその他の単一文字で一律に置
換してもかまいません．)

@findex y (transliterate) command
@cindex Transliteration
@c Transliterate any characters in the pattern space which match
@c any of the @var{source-chars} with the corresponding character
@c in @var{dest-chars}.
@c 
@var{source-chars}にマッチしたパターンスペースのすべての文字を，対応する
@var{dest-chars}の文字に変換します．

@c Instances of the @code{/} (or whatever other character is used in its stead),
@c @code{\}, or newlines can appear in the @var{source-chars} or @var{dest-chars}
@c lists, provide that each instance is escaped by a @code{\}.
@c The @var{source-chars} and @var{dest-chars} lists @emph{must}
@c contain the same number of characters (after de-escaping).
@c 
@code{/}(またはそのかわりに使用されている文字)，@code{\}や改行のインスタ
ンスは，それぞれのインスタンスに@code{\}でエスケープを提供することで，
@var{source-chars}や@var{dest-chars}のリストに書くことが可能です．
@var{source-chars}と@var{dest-chars}のリストには，(エスケープを取り除く
と)同じ数の文字を含める@emph{必要があります}．

@c XXX was getting a bad page break; remove this @need if formatting changes
@need 1000
@item a\
@itemx @var{text}
@c [At most one address allowed.]
@c 
[最大1つのアドレスが利用可能です．]

@findex a (append text lines) command
@cindex Adding a block of text after a line
@cindex Text, appending
@c Queue the lines of text which follow this command
@c (each but the last ending with a @code{\},
@c which will be removed from the output)
@c to be output at the end of the current cycle,
@c or when the next input line is read.
@c 
このコマンドに続いているテキストの行(終りの@code{\}は出力から取り除かれ
ます)を，現在のサイクルの終りや，次の入力行が読み込まれたときに出力され
るキューに保存します．

@item i\
@itemx @var{text}
@c [At most one address allowed.]
@c 
[最大1つのアドレスが利用可能です．]

@findex i (insert text lines) command
@cindex Inserting a block of text before a line
@cindex Text, insertion
@c Immediately output the lines of text which follow this command
@c (each but the last ending with a @code{\},
@c which will be removed from the output).
@c 
このコマンドに続いている行(終りの@code{\}は出力から取り除かれます)をすぐ
に出力します．

@item c\
@itemx @var{text}
@findex c (change to text lines) command
@cindex Replace specific input lines
@cindex Selected lines, replacing
@c Delete the lines matching the address or address-range,
@c and output the lines of text which follow this command
@c (each but the last ending with a @code{\},
@c which will be removed from the output)
@c in place of the last line
@c (or in place of each line, if no addresses were specified).
@c A new cycle is started after this command is done,
@c since the pattern space will have been deleted.
@c 
マッチしたアドレスやアドレスの範囲の行を削除し，このコマンドに続いている
行(終りの@code{\}は出力から取り除かれます)を，最後の行の位置(または，ア
ドレスが指定されていない場合はそれぞれの行の位置)に出力します．新しいサ
イクルは，パターンスペースが削除されてから，このコマンド終了後に開始され
ます．


@item =
@c [At most one address allowed.]
@c 
[最大1つのアドレスが利用可能です．]

@findex = (print line number) command
@cindex Print line number
@cindex Line number, print
@c Print out the current input line number (with a trailing newline).
@c 
現在の入力行の行数を(改行を追加して)出力します．

@item l
@findex l (list unambiguously) command
@cindex List pattern space
@cindex Print unambiguous representation of pattern space
@c Print the pattern space in an unambiguous form:
@c non-printable characters (and the @code{\} character)
@c are printed in C-style escaped form;
@c long lines are split, with a trailing @code{\} character
@c to indicate the split; the end of each line is marked
@c with a @code{$}.
@c 
明確な様式でパターンスペースを出力します．出力不可能な文字(と@code{\}文
字)は，Cのスタイルでエスケープされた様式で出力されます．長い行は分割を示
す@code{\}を後置して分割されます．それぞれの行の終りには@code{$}で印が付
きます．

@item r @var{filename}
@c [At most one address allowed.]
@c 
[最大1つのアドレスが利用可能です．]

@findex r (read file) command
@cindex Read text from a file
@cindex Insert text from a file
@c Queue the contents of @var{filename} to be read and
@c inserted into the output stream at the end of the current cycle,
@c or when the next input line is read.
@c Note that if @var{filename} cannot be read, it is treated as
@c if it were an empty file, without any error indication.
@c 
@var{filename}の内容を読み込み，現在のサイクルの終りや次の入力行が読み込
まれた時に出力ストリームに挿入するためキューに保存します．@var{filename} 
が読み込み不可能な場合，エラーを示すことなく空のファイルが読み込まれてい
るかのように扱われることに注意してください．

@item w @var{filename}
@findex w (write file) command
@cindex Write to a file
@c Write the pattern space to @var{filename}.
@c The @var{filename} will be created (or truncated) before the
@c first input line is read; all @code{w} commands (including
@c instances of @code{w} flag on successful @code{s} commands)
@c which refer to the same @var{filename} are output through
@c the same @sc{FILE} stream.
@c 
パターンスペースを@var{filename}に書き出します．@var{filename}は最初の入
力行が読み込まれる前に作成され(または切り詰められ)ます．同じ
@var{filename}で参照されるすべての@code{w}コマンドは(@code{s}コマンド成
功時の@code{w}フラグのインスタンスを含めて)，おなじ@sc{file}ストリームを
通じて出力されます．

@item D
@findex D (delete first line) command
@cindex Delete first line from pattern space
@c Delete text in the pattern space up to the first newline.
@c If any text is left, restart cycle with the resultant
@c pattern space (without reading a new line of input),
@c otherwise start a normal new cycle.
@c 
パターンスペースのテキストを最初の改行まで削除します．テキストが残ってい
る場合，(入力の新しい行を読み込むことなく)結果として生じているパターンス
ペースでサイクルを再び開始し，それ以外では通常通り新しいサイクルを開始し
ます．

@item N
@findex N (append Next line) command
@cindex Next input line, append to pattern space
@cindex Append next input line to pattern space
@c Add a newline to the pattern space,
@c then append the next line of input to the pattern space.
@c If there is no more input then @sc{sed} exits without processing
@c any more commands.
@c 
パターンスペースに改行を追加し，入力の次の行をパターンスペースに後置しま
す．入力がこれ以上ない場合，@sc{sed}は終了しそれ以上のコマンドを処理しま
せん．

@item P
@findex P (print first line) command
@cindex Print first line from pattern space
Print out the portion of the pattern space up to the first newline.

パターンスペースの位置を最初の改行まで出力します．

@item h
@findex h (hold) command
@cindex Copy pattern space into hold space
@cindex Replace hold space with copy of pattern space
@cindex Hold space, copying pattern space into
@c Replace the contents of the hold space with the contents of the pattern space.
@c 
ホールドスペースの内容を，パターンスペースの内容で置換します．

@item H
@findex H (append Hold) command
@cindex Append pattern space to hold space
@cindex Hold space, appending from pattern space
@c Append a newline to the contents of the hold space,
@c and then append the contents of the pattern space to that of the hold space.
@c 
ホールドスペースの内容に改行を後置した後，パターンスペースの内容をホール
ドスペースに後置します．

@item g
@findex g (get) command
@cindex Copy hold space into pattern space
@cindex Replace pattern space with copy of hold space
@cindex Hold space, copy into pattern space
@c Replace the contents of the pattern space with the contents of the hold space.
@c 
パターンスペースの内容をホールドスペースの内容で置換します．

@item G
@findex G (appending Get) command
@cindex Append hold space to pattern space
@cindex Hold space, appending to pattern space
@c Append a newline to the contents of the pattern space,
@c and then append the contents of the hold space to that of the pattern space.
@c 
パターンスペースの内容に改行を後置した後，ホールドスペースの内容をパター
ンスペースに後置します．

@item x
@findex x (eXchange) command
@cindex Exchange hold space with pattern space
@cindex Hold space, exchange with pattern space
@c Exchange the contents of the hold and pattern spaces.
@c 
ホールドスペースとパターンスペースの内容を入れ換えます．

@end table


@node Programming Commands, , Other Commands, sed Programs
@section 頑固な@sc{sed}プログラマのためのコマンド

@c In most cases, use of these commands indicates that you are
@c probably better off programming in something like @sc{perl}.
@c But occasionally one is committed to sticking with @sc{sed},
@c and these commands can enable one to write quite convoluted
@c scripts.
@c 
ほとんどの状況で，これらのコマンドを使用するよりは，おそらく@sc{perl}の
ようなものでプログラムをした方が良いでしょう．しかし，時には@sc{sed}に固
執することを約束する人もいて，これらのコマンドで全く複雑なスクリプトを書
くことも可能になります．

@cindex Flow of control in scripts
@table @samp
@item : @var{label}
@c [No addresses allowed.]
@c 
[アドレスは利用不可能です．]

@findex : (label) command
@cindex Labels, in scripts
@c Specify the location of @var{label} for the @code{b} and @code{t} commands.
@c In all other respects, a no-op.
@c 
@code{b}と@code{t}コマンドに対する@var{label}の位置を指定します．それ以
外では何もしません．

@item b @var{label}
@findex b (branch) command
@cindex Branch to a label, unconditionally
@cindex Goto, in scripts
@c Unconditionally branch to @var{label}.
@c The @var{label} may be omitted, in which case the next cycle is started.
@c 
無条件で@var{label}に分岐します．@var{label}は省略可能で，その場合は次の
サイクルが開始されます．

@item t @var{label}
@findex t (conditional branch) command
@cindex Branch to a label, if @code{s///} succeeded
@cindex Conditional branch
@c Branch to @var{label} only if there has been a successful @code{s}ubstitution
@c since the last input line was read or @code{t} branch was taken.
@c The @var{label} may be omitted, in which case the next cycle is started.
@c 
前回の入力行の読み込みや@code{t}分岐の処理以降に，@code{s}の置換で成功し
たしたものがある場合のみ@var{label}に分岐します．@var{label}は省略可能で，
その場合は次のサイクルが開始されます．
@end table


@node Examples, Limitations, sed Programs, Top
@chapter いくつかのサンプルスクリプト

@c XXX FIXME
@c [[Not this release, sorry.
@c But check out the scripts in the testsuite directory,
@c and the amazing dc.sed script in the
@c top-level directory of this distribution.]]
@c 
[[このリリースには残念ながらありません．しかし，テストスイートのディレク
トリのスクリプトと，この配布物のトップレベルのディレクトリの素晴らしい
dc.sedを調べてみてください．]]

@node Limitations, Other Resources, Examples, Top
@chapter 行の長さの制限(がないこと)について

@cindex @sc{gnu} extensions, unlimited line length
@cindex Portability, line length limitations
@c For those who want to write portable @sc{sed} scripts,
@c be aware that some implementations have been known to
@c limit line lengths (for the pattern and hold spaces)
@c to be no more than 4000 bytes.
@c The POSIX.2 standard specifies that conforming @sc{sed}
@c implementations shall support at least 8192 byte line lengths.
@c @sc{GNU} @sc{sed} has no built-in limit on line length;
@c as long as @sc{sed} can malloc() more (virtual) memory,
@c it will allow lines as long as you care to feed it
@c (or construct within it).
@c 
移植性の高い@sc{sed}スクリプトを書こうとしている人々は，実装形式によって
は，(パターンスペースとホールドスペースの)行の長さに，最大でも4000バイト
までという既知の制限が有ることを覚えておいてください．POSIX.2の標準では，
それに準じている@sc{sed}の実装を，少なくとも8192バイトの行の長さをサポー
トするように指定しています．@sc{gnu} @sc{sed}には行の長さに組み込まれて
いる制限はありません．@sc{sed}が(仮想)メモリ上でmalloc()することが可能な
限り，供給しようとしている(またはその構成物の)長さまで，行を長くすること
が可能です．


@node Other Resources, Reporting Bugs, Limitations, Top
@chapter @sc{sed}を学ぶ際のその他の情報源

@cindex Addtional reading about @sc{sed}
@c In addition to several books that have been written about @sc{sed}
@c (either specifically or as chapters in books which discuss
@c shell programming), one can find out more about @sc{sed}
@c (including suggestions of a few books) from the FAQ
@c for the seders mailing list, available from any of:
@c 
@sc{sed}(または，シェルプログラミングに付いて論じている本の特定の章)に関
して書かれているいくつかの本に加えて，seders(@sc{sed}プログラマ)のメーリ
ングリストのFAQや，以下の利用可能なもので，(数冊の本の示唆を含めて)
@sc{sed}を理解することが可能です．
@display
 @uref{http://www.dbnet.ece.ntua.gr/~george/sed/sedfaq.html}
 @uref{http://www.ptug.org/sed/sedfaq.htm}
 @uref{http://www.wollery.demon.co.uk/sedtut10.txt}
@end display

@c There is an informal ``seders'' mailing list manually maintained
@c by Al Aab.  To subscribe, send e-mail to @email{af137@@torfree.net}
@c with a brief description of your interest.
@c 
Aabが手作業で管理している非公式の``seders''のメーリングリストがあります．
購読するためには，興味があるものの短い記述とともに
@email{af137@@torfree.net}へ電子メールを送ってください．

@node Reporting Bugs, Concept Index, Other Resources, Top
@chapter バグの報告

@cindex Bugs, reporting
@c Email bug reports to @email{bug-gnu-utils@@gnu.org}.
@c Be sure to include the word ``sed'' somewhere in the ``Subject:'' field.
@c 
バグの報告は@email{bug-gnu-utils@@gnu.org}に電子メールを送ってください．
``Subject:''フィールドのどこかに，単語``sed''を含めてください．

@c XXX FIXME: the term "cycle" is never defined...

@page
@node Concept Index, Command and Option Index, Reporting Bugs, Top
@unnumbered 概念の索引

@c This is a general index of all issues discussed in this manual, with the
@c exception of the @sc{sed} commands and command-line options.
@c 
以下は，このマニュアルで議論した問題全ての，@sc{sed}コマンドとコマンドラ
インオプション以外の一般的な索引です．

@printindex cp

@page
@node Command and Option Index, , Concept Index, Top
@unnumbered コマンドとオプションの索引

@c This is an alphabetical list of all @sc{sed} commands and command-line
@c opions.
@c 
以下は，@sc{sed}コマンドとコマンドラインオプション全ての，アルファベット
順のリストです．

@printindex fn

@contents
@bye
