GNU/Linux >> Linux の 問題 >  >> Linux

Sedテキストエディタの使い方を学ぶ

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を確認します あなたのためにできる。


Linux
  1. コマンドラインで使用するのが大好きな6つのLinuxメタ文字

  2. ヒアドキュメントをテキストエディタとして使用する方法

  3. ファイルの先頭にテキストを挿入する方法は?

  1. Linuxsedコマンドの使用方法

  2. Linuxでのテキストファイルの少ないビューアの高度な使用

  3. sed を使用してファイルの 1 行目にテキストを挿入するにはどうすればよいですか?

  1. sedを使用してコマンドラインでテキストを操作する

  2. ファイルの最初の行の前にテキストを挿入する方法は?

  3. InstantSiteでテキストエディタを使用する方法。