AT&Tの元のUnixオペレーティングシステムのバージョン7用に作成されたsed
それ以来、コマンドはおそらくすべてのUnixおよびLinuxOSに含まれています。 sed
アプリケーションはストリームエディタです 、およびテキストエディタとは異なり、ファイルのデータが処理のためにロードされるビジュアルバッファを開きません。代わりに、端末に入力されたコマンドまたはスクリプト内の一連のコマンドに従って、ファイルを1行ずつ操作します。
インストール
その他のLinuxリソース
- Linuxコマンドのチートシート
- 高度なLinuxコマンドのチートシート
- 無料のオンラインコース:RHELの技術概要
- Linuxネットワーキングのチートシート
- SELinuxチートシート
- Linuxの一般的なコマンドのチートシート
- Linuxコンテナとは何ですか?
- 最新のLinux記事
Linux、BSD、またはmacOSを使用している場合は、すでにGNUまたはBSDがsed
されています。 インストールされています。これらは、元のsed
の2つの独自の再実装です。 コマンドであり、それらは似ていますが、わずかな違いがある場合があります。 GNU sed
一般的に、最も機能が豊富なsed
と見なされています そこにあり、これらのプラットフォームのいずれかで広く利用できます。
GNU sed
が見つからない場合 (多くの場合、gsed
と呼ばれます Linux以外のシステムの場合)、GNUWebサイトからソースコードをダウンロードできます。 GNUをsed
することの良いところ インストールされているのは、追加の機能に使用できるということですが、sed
のPOSIX仕様のみに準拠するように制約することもできます。 、移植性が必要な場合。
Windowsでは、GNU sed
をインストールできます チョコレートを使って。
Sedの仕組み
sed
アプリケーションは一度に1行で動作します。視覚的な表示がないため、パターンスペースが作成されます。これは、入力ストリームからの現在の行を含むメモリ内のスペースです(末尾の改行文字は削除されます)。パターンスペースが入力されたら、sed
への指示 実行されます。コマンドが条件付きの場合もあれば、絶対的な場合もあるため、これらのコマンドの結果は、sed
の使用方法によって異なります。 。
コマンドの終わりに達すると、sed
パターン空間の内容を出力ストリームに出力します。デフォルトの出力ストリームはstdoutです 、ただし、--in-place=.bak
を使用して、ファイルにリダイレクトしたり、同じファイルに戻したりすることもできます。 オプション。
その後、サイクルは次の入力行から再開されます。
sed
の構文 コマンドは次のとおりです:
$ sed --options [optional SCRIPT] [INPUT FILE or STREAM]
編集したいものを見つける
ビジュアルエディタでは、通常、テキストファイルで変更したいものを、あまり考えずに見つけます。あなたの目(またはスクリーンリーダー)はテキストをスキャンし、変更したい単語またはテキストを挿入または削除したい場所を見つけて、入力を開始します。 sed
のインタラクティブモードはありません ただし、特定のコマンドを実行するために満たす必要のある条件を指定する必要があります。
これらの例では、example.txt
というファイルを想定しています。 このテキストが含まれています:
hello
world
This is line three.
Here is the final line.
行番号を指定すると、sed
に通知されます ファイル内のその特定の行でのみ動作します。
たとえば、このコマンドはファイルの1行目を選択して出力します。 sed
処理後ののデフォルトのアクションは、 stdoutに行を出力することでもあります 、これには最初の行を複製する効果があります:
$ sed ‘1p’ example.txt
hello
hello
world
This is line three.
Here is the final line.
行番号は段階的に指定することもできます。たとえば、1~2
2行ごとに選択されていることを示します(「最初の行から2行おきに選択」)。命令1~3
最初の行の後に3行ごとに選択することを意味します:
$ sed ‘1p’ example.txt
hello
hello
world
This is line three.
Here is the final line.
Here is the final line.
ライン位置
$
を使用すると、ファイルの最後の行でのみ操作できます セレクターとして:
$ sed ‘$p’ example.txt
hello
world
This is line three.
Here is the final line.
Here is the final line.
GNUではsed
、複数の行を選択できます(sed '1,$p'
たとえば、最初と最後の行を印刷します。
否定
番号または位置で選択すると、感嘆符(!
)で反転できます。 ) キャラクター。これにより、を除くすべての行が選択されます 最初の行:
$ sed ‘1!p’ example.txt
hello
world
world
This is line three.
This is line three.
Here is the final line.
Here is the final line.
パターンマッチング
パターンマッチは、検索と考えることができます。 ワードプロセッサまたはブラウザでの操作。単語を入力します(パターン )、結果が選択されます。パターン一致の構文は、/pattern/
です。 。
$ sed ‘/hello/p’ example.txt
hello
hello
world
This is line three.
Here is the final line.
$ sed ‘/line/p’ example.txt
hello
world
This is line three.
This is line three.
Here is the final line.
Here is the final line.
Sedで編集
編集したいものが見つかったら、好きなアクションを実行できます。 sed
を使用して編集を実行します コマンドで。 sed
のコマンド sed
とは異なります コマンド自体。それが役立つ場合は、それらを「アクション」または「動詞」または「指示」と考えてください。
sed
のコマンド p
などの1文字です 印刷の場合 前の例で使用したコマンド。最初は思い出すのが難しいかもしれませんが、他のすべての場合と同様に、練習することでそれらを知ることができます。
印刷用p
p
命令は、パターン空間に現在保持されているものをすべて印刷します。
削除の場合はd
d
命令はパターンスペースを削除します。
$ sed ‘$d’ example.txt
hello
world
This is line three.
$ sed ‘1d’ example.txt
world
This is line three.
Here is the final line.
検索と置換
s
コマンドはパターンを検索し、それを別のものに置き換えます。これはおそらくsed
の最も人気のあるカジュアルな使用法です 、そしてそれはしばしば最初の(そして時には唯一の)sed
ユーザーが学習するコマンド。ほぼ間違いなく、テキスト編集に最も役立つコマンドです。
$ sed ‘s/world/opensource.com/’
hello
opensource.com
This is line three.
Here is the final line.
置換テキストで使用できる特別な機能もあります。たとえば、\L
置換テキストを小文字に変換し、\l
次のキャラクターについても同じことをします。 sed
にリストされている他のものがあります ドキュメント(info sed
で表示できます コマンド)。
特殊文字&
置換句のは、一致したパターンを指します:
$ sed ‘s/is/\U&/’ example.txt
hello
world
ThIS is line three.
Here IS the final line.
特別なフラグを渡して、s
の方法に影響を与えることもできます 見つかったものを処理します。 g
(グローバル 、おそらく)フラグはs
に通知します 最初の一致だけでなく、行で見つかったすべての一致に置換を適用するには:
$ sed ‘s/is/\U&/g’ example.txt>
hello
world
ThIS IS line three.
Here IS the final line.
その他の重要なフラグには、一致するパターンのどのオカレンスに影響を与えるかを示す番号が含まれます。
$ sed ‘s/is/\U&/2’ example.txt>
hello
world
This IS line three.
Here is the final line.
w
フラグの後にファイル名を続けると、一致した行が次の場合にのみファイルに書き込まれます。 変更が加えられました: $ sed ‘s/is/\U&/w sed.log’ example.txt
hello
world
ThIS is line three.
Here IS the final line.
$ cat sed.log
ThIS is line three.
Here IS the final line.
フラグを組み合わせることができます:
$ sed ‘s/is/\U&/2w sed.log’ example.txt
hello
world
This IS line three.
Here is the final line.
$ cat sed.log
This IS line three.
スクリプト
sed
を使用したすばらしいサイトがたくさんあります 「ワンライナー。」彼らはあなたにタスク指向のsed
を与えます 一般的な問題を解決するためのコマンド。ただし、sed
を学習する あなた自身のためにあなたはあなた自身のワンライナーを書くことを可能にし、それらはあなたの特定のニーズに合わせて調整することができます。
sed
のスクリプト 端末に行として書き込むことも、ファイルに保存してsed
で実行することもできます。 自体。 sed
を再利用することはめったにないので、小さなスクリプトをすべて1つのコマンドとして作成する傾向があります。 実生活でのコマンド。 sed
を書くとき スクリプト。通常、1つのファイルに非常に固有です。たとえば、この記事の最初のドラフトを書いた後、私はsed
を使用しました 「sed」の大文字と小文字を標準化すること。これは、おそらく二度と行う必要のない作業です。
sed
に一連の個別のコマンドを発行できます セミコロンで区切る(;
。
$ sed ‘3t ; s/line/\U&/’ example.txt
hello
world
This is LINE three.
This is the final line.
中かっこでスコープを変更
中かっこで影響を受ける結果を制限することもできます({}
)。 sed
を同封する場合 中かっこで囲まれたコマンドは、特定の選択にのみ適用されます。たとえば、「line」という単語は、サンプルテキストの2行に表示されます。 sed
を強制することができます 必要な一致条件($
)を宣言することにより、最終行のみに影響を与えます 最終行を示すため)、s
を配置します 直後に中かっこで実行するコマンド:
$ sed ‘$ {s/line/\U&/}’ example.txt
hello
world
This is line three.
This is the final LINE.
Sedを学ぶ
sed
を使用すると、さらに多くのことができます この記事で説明されているよりも。分岐すらしていません(b
)、テスト(t
)、ホールド スペース(H
)、および他の多くの機能。 ed
のように 、sed
おそらく、ドキュメントの作成や、実行する必要のあるすべてのスクリプトタスクに使用するテキストエディタではありませんが、POSIXユーザーとしての強力なオプションです。 sed
の方法を学ぶ コマンドは構造化されており、短いスクリプトの書き方により、大量のテキストをすばやく変更できます。 info
をお読みください GNUのページsed
、またはBSD sed
のマニュアルページ 、およびsed
を確認します あなたのためにできる。