Unix-commands-ed

提供:Dev Guides
移動先:案内検索

ed-Unix、Linuxコマンド

link:/unix_commands/index [previous] link:/unix_commands/index [next] [[1]] php [AddThis Social Bookmark Button]

NAME

概要

stringfile

赤[-] [-Gs] [-p string] [file]

説明

*edreded*

file_引数で呼び出された場合、_file_のコピーがエディターのバッファーに読み込まれます。 _file_自体に直接ではなく、このコピーに変更が加えられます。 ed を終了すると、 ‘w’_コマンドで明示的に保存されていない変更は失われます。

編集は、_command_と_input_の2つの異なるモードで行われます。 最初に呼び出されたとき、 ed はコマンドモードです。 このモードでは、コマンドが標準入力から読み取られ、エディターバッファーの内容を操作するために実行されます。 典型的なコマンドは次のようになります。

、s/old _/ new_/g

これは、文字列_old_のすべての出現を_new_に置き換えます。

’a’(追加)、_ ’i’(挿入)、または’ ’c’(変更)などの入力コマンドが与えられると、 ed は入力モードに入ります。 これは、ファイルにテキストを追加する主な手段です。 このモードでは、使用可能なコマンドはありません。代わりに、標準入力はエディターバッファーに直接書き込まれます。 行は、newline_文字までのテキストで構成されます。 入力モードは、行に単一のピリオド(._)を入力することにより終了します。

すべての ed コマンドは、行全体または行の範囲で動作します。たとえば、_ ’d’コマンドは行を削除します。 _’m’_コマンドは行を移動します。 上記の例のように、置換によって行の一部のみを変更することができます。 ただし、ここでも’s’_コマンドは一度に行全体に適用されます。

一般に、 ed コマンドは、0個以上の行アドレスと、それに続く1文字のコマンドと、場合によっては追加のパラメーターで構成されます。つまり、コマンドの構造は次のとおりです。

_ [address [、address]] command [parameters] _

アドレスは、コマンドの影響を受ける行または行の範囲を示します。 コマンドが受け入れるよりも少ないアドレスが指定された場合、デフォルトのアドレスが提供されます。

OPTIONS

Tag Description
-G Forces backwards compatibility. Affects the commands ‘G’, ‘V’, ‘f’, ‘l’, ‘m’, ‘t’, and ‘!!’.
-s Suppresses diagnostics. This should be used if ed’s standard input is from a script.
-p string Specifies a command prompt. This may be toggled on and off with the ‘P’ command.
file Specifies the name of a file to read. If file is prefixed with a bang (!), then it is interpreted as a shell command. In this case, what is read is the standard output of file executed via sh(1). To read a file whose name begins with a bang, prefix the name with a backslash (\). The default filename is set to file only if it is not prefixed with a bang.

LINE ADDRESSING

  • ed * current address

行アドレスは、下のリストにあるベースのいずれかで構成され、オプションで数値オフセットが続きます。 オフセットには、数字、演算子(つまり、_ + -、および ^ _)および空白の任意の組み合わせを含めることができます。 アドレスは左から右に読み取られ、それらの値は現在のアドレスに対して相対的に計算されます。

アドレスが行番号を表すという規則の1つの例外は、アドレス_0_(ゼロ)です。 これは「最初の行の前」を意味し、理にかなっている場合はどこでも有効です。

アドレス範囲は、コンマまたはセミコロンで区切られた2つのアドレスです。 範囲内の最初のアドレスの値は、2番目のアドレスの値を超えることはできません。 範囲内に1つのアドレスのみが指定されている場合、2番目のアドレスは指定されたアドレスに設定されます。 _n> 2、_でアドレスのn - tupleが指定されている場合、対応する範囲はn - tupleの最後の2つのアドレスによって決定されます。 1つのアドレスのみが予想される場合、最後のアドレスが使用されます。

コンマ区切りの範囲内の各アドレスは、現在のアドレスを基準にして解釈されます。 セミコロンで区切られた範囲では、最初のアドレスが現在のアドレスを設定するために使用され、2番目のアドレスは最初のアドレスに対して解釈されます。

次のアドレス記号が認識されます。

Tag

説明

.

バッファー内の現在の行(アドレス)。

$

バッファーの最後の行。

n

nth、バッファ内の行。n_は [0、$] ._の範囲の数値です。

-

^

前の行。 これは_-1_と同等で、累積効果で繰り返される場合があります。

-n

^ n

前のnth行目。ここで、_n_は負でない数です。

次の行。 これは_ + 1_と同等であり、累積的な効果で繰り返すことができます。

+ n

空白_n_

nth次の行。ここで、n_は負でない数です。 _Whitespace_の後に数字_n_が続く場合、 + n_と解釈されます。

,

%

バッファーの最初から最後の行。 これは、アドレス範囲_1、$ ._と同等です

バッファーの現在から最後の行。 これは、アドレス範囲_。、$ ._と同等です

/re/

正規表現_re_を含む次の行。 検索はバッファの先頭に折り返され、必要に応じて現在の行まで続けられます。

re?

正規表現_re_を含む前の行。 検索はバッファの最後まで折り返され、必要に応じて現在の行まで続行されます。 ?? 最後の検索を繰り返します。

'lc

以前に_’k’_(マーク)コマンドでマークされた行。ここで、_lc_は小文字です。

正規表現

ed

g/string/

string_を含むすべての行を出力します。 正規表現は、新しいテキストに置き換える古いテキストを選択するために’s’_コマンドでも使用されます。

文字列リテラルの指定に加えて、正規表現は文字列のクラスを表すことができます。 このように表された文字列は、対応する正規表現と一致すると言われます。 正規表現が1行の複数の文字列に一致する可能性がある場合、一番左にある一致が選択されます。

次の記号は、正規表現の作成に使用されます。

Tag

説明

c

「\ {」、「}」、「(」、「)」、「<」、「>」など、以下にリストされていない_c_はすべて一致します。

_c_

'\ {'、 '}'、 '('、 ')'、 '<'、 '>'、 'b'、 'B'、 'w'、 'W'、 '以外のバックスラッシュエスケープ文字_c_ + '、および'? 'はそれ自体と一致します。

.

任意の1文字に一致します。

_ [char-class] _

_char-class_の任意の1文字に一致します。 _char-class_に「]」を含めるには、最初の文字である必要があります。 文字の範囲は、範囲の終了文字を「-」で区切って指定できます。たとえば、「a-z」は小文字を指定します。 次のリテラル式を_char-class_で使用して、文字セットを指定することもできます。

[:alnum:] [:cntrl:] [:lower:] [:space:] [:alpha:] [:digit:] [:print:] [:upper:] [:blank:] [:graph:] [:punct:] [:xdigit:]

「-」が_char-class_の最初または最後の文字として表示される場合、それはそれ自体と一致します。 _char-class_内の他のすべての文字は、それ自体と一致します。

次の形式の_char-class_のパターン:

[._ col-elm_。]または、 [=col-elm=]

_col-elm_は_collat​​ing element_であり、 locale (5)に従って解釈されます(現在サポートされていません)。 これらの構成の説明については、 regex (3)を参照してください。

{空} [^ char-class]

_char-class_内ではなく、改行以外の任意の1文字と一致します。 _char-class_は上記のように定義されています。

^

「^」が正規表現の最初の文字である場合、正規表現を行の先頭に固定します。 それ以外の場合は、それ自体に一致します。

$

「$」が正規表現の最後の文字である場合は、正規表現を行末に固定します。 それ以外の場合は、それ自体に一致します。

\(_ re_ \)

(おそらくnull)部分式_re_を定義します。 部分式はネストできます。 後続の後方参照形式「\ n _」( n_は範囲[1,9]の数値)は、nth部分式と一致するテキストに展開されます。 たとえば、正規表現「\(a.c \)\ 1」は文字列「abcabc」と一致しますが、「abcadc」とは一致しません。 部分式は、左の区切り文字を基準にして順序付けられます。

直前の1文字の正規表現または部分式に0回以上一致します。 「」が正規表現またはサブ表現の最初の文字である場合、それはそれ自体と一致します。 「」演算子を使用すると、予期しない結果が生じる場合があります。 たとえば、サブストリング「bbb」ではなく、正規表現「b *」はストリング「abbb」の先頭に一致します。これは、ヌル一致が唯一の左端の一致であるためです。

\\ {_ n、m_ \} \\ {_ n、_ \}

\\ {_ n_ \}

直前の単一文字の正規表現または部分式に少なくとも_n_回、最大で_m_回一致します。 _m_を省略すると、少なくとも_n_回一致します。 コンマも省略すると、_n_回だけ正確に一致します。 これらの形式のいずれかが正規表現または部分表現で最初に出現する場合、文字どおりに解釈されます(つまり、正規表現「\\ {2 \}」は文字列「\ {2}」に一致します)。

\<

\>

単一の文字の正規表現またはその直後の部分式を、word_の先頭(\ <)または末尾(\>)に固定します。つまり、ASCIIでは、アンダースコア()を含む英数字の最大文字列です。

ed

Tag

説明

\‘

Tag Description
\’ Unconditionally matches the beginning (\‘) or ending (\’) of a line.
\? Optionally matches the single character regular expression or subexpression immediately preceding it. For example, the regular expression ‘a[bd]\?c’ matches the strings ‘abc’, ‘adc’ and ‘ac’. If \? occurs at the beginning of a regular expressions or subexpression, then it matches a literal ‘?’.
\+ Matches the single character regular expression or subexpression immediately preceding it one or more times. So the regular expression ‘a+’ is shorthand for ‘aa*’. If \+ occurs at the beginning of a regular expression or subexpression, then it matches a literal ‘+’.
\b Matches the beginning or ending (null string) of a word. Thus the regular expression ‘\bhello\b’ is equivalent to ‘\<hello\>’. However, ‘\b\b’ is a valid regular expression whereas ‘\<\>’ is not.
\B Matches (a null string) inside a word.
\w Matches any character in a word.
\W Matches any character not in a word.

COMMANDS

ed

一般に、1行につき最大1つのコマンドが許可されます。 ただし、ほとんどのコマンドは、_ 'p(print)、 l(list)、またはn'_(enumerate)のいずれかの印刷接尾辞を受け入れて、コマンドの影響を受ける最後の行を印刷します。 。

割り込み(通常^ C)には、現在のコマンドを中止し、エディターをコマンドモードに戻す効果があります。

*ed* は次のコマンドを認識します。 コマンドは、指定されていない場合(括弧内)、指定されたデフォルトのアドレスまたはアドレス範囲とともに表示されます。

Tag

説明

(.)a

アドレス0の場合もあるアドレス行の後にバッファにテキストを追加します。 テキストは入力モードで入力されます。 現在のアドレスは、入力された最後の行に設定されます。

(。、。)c

バッファ内の行を変更します。 アドレス指定された行はバッファから削除され、テキストがその場所に追加されます。 テキストは入力モードで入力されます。 現在のアドレスは、入力された最後の行に設定されます。

(。、。)d

バッファーからアドレス指定された行を削除します。 削除された範囲の後に行がある場合、現在のアドレスはこの行に設定されます。 そうでない場合、現在のアドレスは削除された範囲の前の行に設定されます。

e file

_file_を編集し、デフォルトのファイル名を設定します。 _file_が指定されていない場合、デフォルトのファイル名が使用されます。 バッファ内の行は、新しいファイルが読み取られる前に削除されます。 現在のアドレスは、最後に読み取られた行に設定されます。

e !command

_ ‘!command’_の標準出力を編集します(以下の!_command_を参照)。 デフォルトのファイル名は変更されていません。 _command_の出力が読み取られる前に、バッファー内のすべての行が削除されます。 現在のアドレスは、最後に読み取られた行に設定されます。

E file

_file_を無条件に編集します。 これは_e_コマンドと似ていますが、未書き込みの変更は警告なしに破棄されます。 現在のアドレスは、最後に読み取られた行に設定されます。

f file

デフォルトのファイル名を_file_に設定します。 _file_が指定されていない場合、デフォルトのエスケープされていないファイル名が出力されます。

(1、$)g /re/command-list

正規表現_re_に一致するアドレス指定された各行に_command-list_を適用します。 現在のアドレスは、_command-list_が実行される前に現在一致している行に設定されます。 _’g’_コマンドの最後に、現在のアドレスが_command-list_の影響を受ける最後の行に設定されます。

command-list_の各コマンドは個別の行にある必要があり、最後の行を除くすべての行はバックスラッシュ(\)で終了する必要があります。 _’g ’’ G ’’ v’、および ’’ V’を除くすべてのコマンドが許可されます。 _command-list_内の改行のみは、 ’p’_コマンドと同等です。

(1、$)G /re/

正規表現に一致するアドレス指定された行を対話的に編集します。 _’G’_コマンドの最後に、現在のアドレスが(最後の)_command-list_の影響を受ける最後の行に設定されます。

command-list_の形式は、 ’g’_コマンドの形式と同じです。 改行のみがヌルコマンドリストとして機能します。 単一の「&」は、最後の非ヌルコマンドリストを繰り返します。

H

エラーの説明の印刷を切り替えます。 デフォルトでは、説明は出力されません。 デバッグを支援するために、edスクリプトはこのコマンドで開始することをお勧めします。

h

最後のエラーの説明を出力します。

(.)i

バッファーの現在の行の前にテキストを挿入します。 テキストは入力モードで入力されます。 現在のアドレスは、入力された最後の行に設定されます。

(。、。+ 1)j

アドレス指定された行を結合します。 アドレス指定された行はバッファから削除され、結合されたテキストを含む単一の行に置き換えられます。 現在のアドレスが結果の行に設定されます。

(。)klc

小文字の_lc_で行をマークします。 この行は、後続のコマンドで_’lc_(つまり、単一引用符の後に_lc_が続く)としてアドレス指定できます。 行が削除されるか、変更されるまで、マークはクリアされません。

(。、。)l

アドレス指定された行を明確に出力します。 端末から呼び出された場合、 ed は、改行が入力されるまで各ページの終わりで一時停止します。 現在のアドレスは、印刷された最後の行に設定されます。

(。、。)m(。)

バッファー内の行を移動します。 アドレス指定された行は、アドレス_0_(ゼロ)の右側の宛先アドレスの後に移動されます。 現在のアドレスは、最後に移動した行に設定されます。

(。、。)n

アドレス番号付きの行を行番号とともに出力します。 現在のアドレスは、印刷された最後の行に設定されます。

(。、。)p

アドレス指定された行を印刷します。 端末から呼び出された場合、 ed は、改行が入力されるまで各ページの終わりで一時停止します。 現在のアドレスは、印刷された最後の行に設定されます。

P

コマンドプロンプトのオンとオフを切り替えます。 コマンドラインオプション_-p string_でプロンプトが指定されていない限り、コマンドプロンプトはデフォルトでオフになっています。

q

編集を終了します。

Q

無条件にedを終了します。 これは_q_コマンドに似ていますが、未書き込みの変更は警告なしに破棄されます。

($)r file

アドレス指定された行の後に_file_を読み取ります。 _file_が指定されていない場合、デフォルトのファイル名が使用されます。 コマンドの前にデフォルトのファイル名がなかった場合、デフォルトのファイル名は_file_に設定されます。 それ以外の場合、デフォルトのファイル名は変更されません。 現在のアドレスは、最後に読み取られた行に設定されます。

($)r !command

アドレス指定された行の後に_ ’!command’の標準出力を読み取ります(以下の!_command_を参照)。 デフォルトのファイル名は変更されていません。 現在のアドレスは、最後に読み取られた行に設定されます。

(。、。)s /re/replacement/(。、。)s /re/replacement/ g(。、。)s /re/replacement/n

正規表現_re_に一致するアドレス指定された行のテキストを_replacement_に置き換えます。 デフォルトでは、各行の最初の一致のみが置き換えられます。 ‘g’(グローバル)サフィックスが指定されている場合、すべての一致が置き換えられます。 _’n’_接尾辞(_n_は正の数)は、nthの一致のみを置換します。 アドレス指定された行で置換が実行されない場合、エラーになります。 現在のアドレスは、影響を受ける最後の行に設定されます。

re_と_replacement_は、スペースと改行以外の任意の文字で区切ることができます(以下の’s’コマンドを参照)。 最後の区切り文字の1つまたは2つが省略された場合、影響を受ける最後の行は、印刷接尾辞’p’_が指定されたものとして印刷されます。

replacement_のエスケープされていない「&」は、現在一致しているテキストに置き換えられます。 文字シーケンス ‘\ m’_(_m_は[1,9]の範囲の数字)は、一致したテキストのmth後方参照式に置き換えられます。 _replacement_が単一の「%」で構成される場合、最後の置換の_replacement_が使用されます。 改行がバックスラッシュ(\)でエスケープされている場合、_replacement_に改行を埋め込むことができます。

(。、。)s

最後の置換を繰り返します。 この形式の_’s’コマンドは、カウントサフィックス’n’、または’r ’’ g’、および’p’の任意の組み合わせを受け入れます。 カウントサフィックス’n’_が指定されている場合、nth番目の一致のみが置き換えられます。 _’r’_サフィックスを使用すると、最後の置換の代わりに、最後の検索の正規表現が使用されます。 _’g’_サフィックスは、最後の置換のグローバルサフィックスを切り替えます。 _‘p’_接尾辞は、最後の置換の印刷接尾辞を切り替えます。現在のアドレスは、影響を受ける最後の行に設定されます。

(。、。)t(。)

アドレス指定された行を右側の宛先アドレス(アドレス_0_(ゼロ))の後にコピー(転送)します。 現在のアドレスは、コピーされた最後の行に設定されます。

u

最後のコマンドを取り消して、現在のアドレスをコマンド前のアドレスに復元します。 グローバルコマンド_’g ’’ G ’’ v’、および ’’ V’。 元に戻すことにより、単一のコマンドとして扱われます。 _’u’_はそれ自身の逆です。

(1、$)v /re/command-list

正規表現_re_に一致しないアドレス指定された各行に_command-list_を適用します。 これは_’g’_コマンドに似ています。

(1、$)V /re/

正規表現_re.に一致しないアドレス指定された行を対話的に編集します。これは’G’_コマンドに似ています。

(1、$)w file

アドレス指定された行を_file_に書き込みます。 _file_の以前の内容は、警告なしに失われます。 デフォルトのファイル名がない場合、デフォルトのファイル名は_fileに設定され、それ以外の場合は変更されません。 ファイル名が指定されていない場合、デフォルトのファイル名が使用されます。 現在のアドレスは変更されていません。

(1、$)wq file

アドレス指定された行を_file_に書き込み、_ ’q’_コマンドを実行します。

(1、$)w !command

アドレス指定された行を_ ‘!command’_の標準入力に書き込みます(以下の!_command_を参照)。 デフォルトのファイル名と現在のアドレスは変更されていません。

(1、$)W file

file_の末尾にアドレス指定された行を追加します。 これは’w’_コマンドに似ていますが、ファイルの以前の内容が上書きされないことを想定しています。 現在のアドレスは変更されていません。

(.)x

アドレス指定された行の後に、カットバッファーの内容をコピー(書き込み)します。 現在のアドレスは、コピーされた最後の行に設定されます。

(。、。)y

アドレス指定された行をカットバッファーにコピー(ヤンク)します。 カットバッファーは、後続の_’y ’’ s ’’ j ’’ d’_、または ’’ c’_コマンドによって上書きされます。 現在のアドレスは変更されていません。

(。+ 1)zn

アドレス指定された行から一度に_n_行スクロールします。 _n_が指定されていない場合、現在のウィンドウサイズが使用されます。 現在のアドレスは、印刷された最後の行に設定されます。

コマンド

*sh* (1)を介して_command_を実行します。 _command_の最初の文字が「!」の場合、前の_ ’!command’_のテキストに置き換えられます。 *ed* は、バックスラッシュ(\)エスケープの_command_を処理しません。 ただし、エスケープされていない_ ’%’ _はデフォルトのファイル名に置き換えられます。 シェルが実行から戻ると、「!」が標準出力に出力されます。 現在の行は変更されていません。

(。、。)#

コメントを開始します。改行までの残りの行は無視されます。 行アドレスにセミコロンが続く場合、現在のアドレスはそのアドレスに設定されます。 それ以外の場合、現在のアドレスは変更されません。

($)=

アドレス指定された行の行番号を出力します。

(。+ 1)改行

アドレス指定された行を出力し、現在のアドレスをその行に設定します。

ファイル

Tag Description
/tmp/ed. * Buffer file
ed.hup The file to which* ed* attempts to write the buffer if the terminal hangs up.

関連項目

*visedregexsh*

米ドル:12-13

  1. W. カーニガンとP. J. Plauger、Pascalのソフトウェアツール、 Addison-Wesley、1981年。

制限事項

  • ed * file

テキスト(非バイナリ)ファイルが改行文字で終了していない場合、 ed は読み取り/書き込み時に改行文字を追加します。 バイナリファイルの場合、 ed は読み取り/書き込み時に改行を追加しません。

行ごとのオーバーヘッド:4 int

診断

  • ed * ‘h’

変更されたバッファを書き込む前に ed を終了または別のファイルを編集しようとすると、エラーが発生します。 コマンドを2回入力すると、コマンドは成功しますが、バッファーへの変更は失われます。

エラーが発生しなかった場合、 ed は0で終了します。それ以外の場合> 0。 リンク:/unix_commands/index [previous]リンク:/unix_commands/index [next]リンク:/cgi-bin/printversion.cgi?tutorial = unix_commands&file = ed [Printer Friendly]

  
Advertisements