sed - テキストのフィルタリングと変換を行うストリームエディタ
概要
sed [-V] [--version] [--help] [-n] [--quiet] [--silent]
[-l N] [--line-length=N] [-u] [--unbuffered]
[-E] [-r] [--regexp-extended]
[-e script] [--expression=script]
[-f script-file] [--file=script-file]
[script-if-no-other-script]
[file...]
説明
Sed はストリームエディタです。ストリームエディタは、入力ストリーム(ファイルまたはパイプラインからの入力)に対して基本的なテキスト変換を実行するために使用されます。スクリプト化された編集を許可するエディタ(edなど)と似ていますが、sedは入力を1回だけ処理するため、より効率的です。しかし、sedがパイプラインでテキストをフィルタリングできる点が、他の種類のエディタとsedを区別する特に重要な点です。
-n, --quiet, --silent
パターン領域の自動的な印刷を抑制します
--debug
プログラムの実行を注釈付きで表示します
-e script, --expression=script
実行するコマンドのリストにスクリプトを追加します
-f script-file, --file=script-file
スクリプトファイルのコンテンツを実行するコマンドのリストに追加します
--follow-symlinks
インプレース処理時にシンボリックリンクを追跡します
-i[SUFFIX], --in-place[=SUFFIX]
ファイルをインプレースで編集します(SUFFIXが指定されている場合、バックアップを作成します)
-l N, --line-length=N
`l`コマンドの目的の行の折り返し長を指定します
--posix
すべてのGNU拡張機能を無効にします
-E, -r, --regexp-extended
スクリプトで拡張正規表現を使用します(移植性を高めるには、POSIX -Eを使用します)。
-s, --separate
ファイルを、1つの連続した長いストリームとしてではなく、個別のファイルとして扱います
--sandbox
サンドボックスモードで操作します(e/r/wコマンドを無効にします)。
-u, --unbuffered
入力ファイルから最小限のデータをロードし、出力バッファをより頻繁にフラッシュします
-z, --null-data
行をNULL文字で区切ります
--help
このヘルプを表示して終了します
--version
バージョン情報を出力して終了します
-e、--expression、-f、または--fileオプションが指定されていない場合、最初の非オプション引数がsedスクリプトとして解釈されます。残りのすべての引数は入力ファイルの名前です。入力ファイルが指定されていない場合、標準入力が読み込まれます。
GNU sedのホームページ:[https://www.gnu.org/software/sed/]。GNUソフトウェアの使用に関する一般的なヘルプ:[https://www.gnu.org/gethelp/>。バグ報告は、<_>宛に送信してください。
Debianによってパッケージ化されました。著作権©2022 Free Software Foundation, Inc.ライセンスGPLv3+:GNU GPLバージョン3以降[https://gnu.org/licenses/gpl.html]。これはフリーソフトウェアであり、変更および再配布することができます。法的範囲内で保証は一切ありません。
コマンドの概要
これは、sedコマンドの簡単な概要であり、すでにsedを知っているユーザー向けのメモとして役立ちます。より詳細な説明については、texinfoドキュメントなどの他のドキュメントを参照する必要があります。
アドレスなしの「コマンド」
: ラベル
bおよびtコマンドのラベル。
#コメント
コメントは、次の改行(または-eスクリプトフラグメントの終わり)まで続きます。
}
{ }ブロックの閉じ括弧。
0個または1個のアドレスコマンド
=
現在の行番号を出力します。
a \
テキスト
テキストを追加します。テキスト内の各埋め込み改行の前にバックスラッシュを付けます。
i \
テキスト
テキストを挿入します。テキスト内の各埋め込み改行の前にバックスラッシュを付けます。
q [終了コード]
autoprintが無効になっていない場合を除き、現在のパターン空間を出力した後、sedスクリプトの処理を直ちに終了します。終了コード引数は、GNU拡張です。
Q [終了コード]
sedスクリプトの処理を直ちに終了します。これはGNU拡張です。
r ファイル名
ファイル名から読み取ったテキストを追加します。
R ファイル名
ファイルから1行読み取って追加します。コマンドが実行されるたびに、ファイルから1行読み取ります。これはGNU拡張です。
アドレス範囲を受け取るコマンド
{
コマンドブロックを開始します(}で終了)。
b ラベル
ラベルに分岐します。ラベルが省略された場合は、スクリプトの末尾に分岐します。
c \
テキスト
選択した行をテキストで置き換えます。テキスト内の各埋め込み改行の前にバックスラッシュを付けます。
d
パターン空間を削除します。次のサイクルを開始します。
D
パターン空間に改行が含まれていない場合、dコマンドが発行されたかのように、通常の新しいサイクルを開始します。それ以外の場合は、パターン空間内の最初の改行までのテキストを削除し、結果のパターン空間でサイクルを再開します。このとき、新しい入力行は読み取りません。
h H
パターン空間をホールド空間にコピー/追加します。
g G
ホールド空間をパターン空間にコピー/追加します。
l
現在の行を「視覚的に曖昧でない」形式で表示します。
l 幅
現在の行を「視覚的に曖昧でない」形式で表示し、幅文字で分割します。これはGNU拡張です。
n N
次の入力行をパターン空間に読み込み/追加します。
p
現在のパターン空間を出力します。
P
現在のパターン空間の最初の埋め込み改行までの部分を出力します。
s/正規表現/置換/
正規表現をパターン空間に対して照合します。照合に成功した場合、照合された部分を置換で置き換えます。置換には、パターン空間で照合された部分を参照する特殊文字&、および正規表現内の対応する照合されたサブ式を参照する特殊エスケープ\1から\9を含めることができます。
t ラベル
最後の入力行が読み込まれてから、および最後のtまたはTコマンドが実行されてから、s///が正常に置換を実行した場合、ラベルに分岐します。ラベルが省略された場合は、スクリプトの末尾に分岐します。
T ラベル
最後の入力行が読み込まれてから、および最後のtまたはTコマンドが実行されてから、s///が置換を実行していない場合、ラベルに分岐します。ラベルが省略された場合は、スクリプトの末尾に分岐します。これはGNU拡張です。
w filename
現在のパターン空間の内容を filename に書き出す。
W filename
現在のパターン空間の最初の行を filename に書き出す。これは GNU 拡張である。
x
パターン空間とホールド空間の内容を交換する。
y/source/dest/
パターン空間内の文字のうち、source に含まれる文字を、dest の対応する文字に置換する。
アドレス
Sed コマンドは、アドレスなしで指定することも、1 つのアドレスで指定することも、2 つのアドレスで指定することもできます。アドレスがない場合、コマンドはすべての入力行に対して実行されます。1 つのアドレスがある場合、コマンドはそのアドレスに一致する入力行に対してのみ実行されます。2 つのアドレスがある場合、コマンドは、最初のアドレスから 2 番目までの一連の入力行に一致するすべての行に対して実行されます。アドレス範囲に関する注意点として、次の 3 つがあります。構文は addr1,addr2 です(つまり、アドレスはカンマで区切られます)。addr1 に一致した行は常に受け入れられ、addr2 がそれよりも前の行を選択した場合でも同様です。addr2 が正規表現である場合、その正規表現は addr1 に一致した行に対してテストされません。
アドレス(またはアドレス範囲)の後、コマンドの前に ! を挿入できます。これは、アドレス(またはアドレス範囲)が一致しない場合にのみ、コマンドが実行されることを指定します。
次の種類のアドレスがサポートされています。
number
指定された行番号にのみ一致します(これは、コマンドラインで -s オプションが指定されていない限り、ファイル間で累積的にインクリメントされます)。
first~step
first で始まり、step 行ごとに続く行に一致します。たとえば、sed -n 1~2p は、入力ストリーム内のすべての奇数行を出力します。また、アドレス 2~5 は、2 番目の行から始まり、5 行ごとに続く行に一致します。first は 0 にできます。この場合、sed は step と同じであるかのように動作します。(これは拡張です)。
$
最後の行に一致します。
/regexp/
正規表現 regexp に一致する行に一致します。一致は現在のパターン空間に対して実行され、s/// などのコマンドでパターン空間を修正できます。
\cregexpc
正規表現 regexp に一致する行に一致します。c は任意の文字にすることができます。
GNU sed は、いくつかの特別な 2 つのアドレス形式もサポートしています。
0addr2
「最初のアドレスに一致」状態から開始し、addr2 が見つかるまで続けます。これは 1addr2 と似ていますが、addr2 が入力の最初の行に一致する場合、0,addr2 形式は範囲の最後にあり、1,addr2 形式は範囲の先頭にあります。これは、addr2 が正規表現の場合にのみ機能します。
addr1,+N
addr1 および addr1 に続く N 行に一致します。
addr1,~N
addr1 および addr1 に続く行に一致し、次の行の入力行番号が N の倍数になるまで続けます。
正規表現
POSIX.2 BRE がサポートされるはずですが、パフォーマンス上の問題があるため、完全にサポートされていません。正規表現内の \n シーケンスは、改行文字に一致します。同様に、\a、\t、およびその他のシーケンスも同様です。-E オプションは、拡張正規表現を使用するように切り替えます。これは長年にわたって GNU sed でサポートされており、現在は POSIX に含まれています。
バグ
バグ報告は次のアドレスにメールで送信してください:_. また、可能な限り、報告に ``sed --version'' の出力を含めてください。
著者
Jay Fenlason、Tom Lord、Ken Pizzini、Paolo Bonzini、Jim Meyering、および Assaf Gordonによって作成されました。
この sed プログラムは、SELinux サポートを組み込んでビルドされました。このシステムでは、SELinux は無効になっています。
GNU sed のホームページ:[https://www.gnu.org/software/sed/]。GNU ソフトウェアの一般的なヘルプ: [https://www.gnu.org/gethelp/>。バグ報告メールアドレス:<_]。
関連項目
awk(1)、ed(1)、grep(1)、tr(1)、perlre(1)、sed.info、sed に関するさまざまな書籍、sed FAQ (http://sed.sf.net/grabbag/tutorials/sedfaq.txt)、http://sed.sf.net/grabbag/。
sed の完全なドキュメントは、Texinfo マニュアルとして管理されています。info プログラムと sed プログラムがサイトに適切にインストールされている場合、次のコマンド
info sed
を使用すると、完全なマニュアルにアクセスできます。