ストリーム エディター (SED): 基本

Sutorimu Edita Sed Ji Ben



SED はストリーム エディターとも呼ばれ、非常に便利なツールです。これは、特定の単語またはパターンを検索し、その後その単語またはパターンに対して何かを行う、つまり変換するために使用されます。 Windows では、SED は「検索」および「置換」機能としても知られています。 SED は Ubuntu に付属しているため、何もインストールする必要はありません。使い始めるだけです。このチュートリアルでは、SED またはストリーム エディターの使用方法を説明します。

「S」コマンド

SED またはストリーム エディターのすべてのコマンドの中で最も重要なのは、「s」コマンドです。 「s」は代替品を表します。構文は次のとおりです。







/ 正規表現 / 交換 / フラグ


そこで、例として「file.txt」というファイルを使用してみましょう。 「file.txt」を cat すると次のようになります。




例を使用して、「s」コマンドがどのように機能するかを示します。



しかし / 初め / / i' ファイル.txt > 月.txt


このような表現が与えられた場合、それは次のことを意味します。





    • s – 代替品の略です。
    • first – 「file.txt」というファイル内で検索する単語。
    • Moon – 「first」という言葉が「moon」という言葉に置き換えられます。
    • i – 無視の略です。最初の部分ではこの部分を無視します。
    • file.txt – SED がパターンまたは単語を検索するファイル。この場合、「最初」という単語は次のようになります。
    • file.txt内で検索

    • Moon.txt – 「first」という単語が「moon」という単語に置き換えられると、「moon.txt」の下に保存されます。

それで、ここで何が起こっているのでしょうか? SED は、最初のインスタンスでのみ「first」という単語を「moon」に置き換えます (つまり、「first」という単語が複数回出現した場合でも、すべてを置き換えたり、複数回置き換えたりすることはありません)。検索するファイルは「file.txt」と呼ばれ、変換または置換が行われると、「moon.txt」の下に保存されます。



これは次のようになります。


「/」を必要な場所に忘れずに入力してください。 「/」を省略すると、SED はコマンドを受け入れません。

これまでのところ、「最初」という単語を「遭遇」に置き換えただけです。ここで、3 行目の「line」という単語 (何度も出現します。具体的には 4 回出現します) を「angel」という単語に置き換えたいとします。

その 3 番目のラインを具体的にどのようにターゲットにすればよいでしょうか?次のコマンドを使用します。

しかし '3s / ライン / 天使 / i' ファイル.txt > 天使.txt


それで、ここで一体何が起こったのでしょうか?さて、「3」は行番号を指定します。したがって、3行目に進みます。次に、「file.txt」という名前のファイル内の「angel」を「line」という単語に置き換え、変換されたファイルを「angel.txt」として保存します。


「3」行と「4」行を置換または変換したい場合はどうすればよいでしょうか?

しかし ' 3 ,4秒 / ライン / 天使 / i' ファイル.txt > angel2.txt



前の例では、無視するために「i」フラグを使用したことに注意してください。ここで、グローバルには「g」フラグを使用します。

例を使用して、「s」コマンドがどのように機能するかを示します。

しかし / ライン / 太陽 / g' ファイル.txt > sun.txt


このような表現が与えられた場合、それは次のことを意味します。

「g」はグローバルを表します。最初の例では、「i」フラグを使用する場合、置換は 1 つだけであることに注意してください。グローバルの「g」を追加したので、どこでも置換することを意味します。つまり、最初の行、2 行目、3 行目、最後の行という代わりに、最初の太陽、2 番目の太陽、3 番目の太陽、最後の太陽と書かれています。ファイル全体 (あらゆる場所) の単語行を「sun」という単語に置き換えます。


さて、含まれる単語に基づいて 1 つの行を選択したい場合はどうすればよいでしょうか? 「file.txt」の最後の行には「last」という単語が含まれていることがわかります。ここで、「これが最後の行です。」というメッセージが必要だとします。これが最後の文です。」文は「これが最後の幽霊です。これが最後の文です。」

次のように書きます。

しかし ' / 最後 / s / ライン / おばけ / ' ファイル.txt > ゴースト.txt


ここでの「last」は、「last」という単語を含む行を検索し、その行内の単語「line」を「ghost」に置き換えるよう SED に指示します。


さて、その逆のことをしたいとします。 「last」という単語を含まないすべての行で、「line」という単語を「ghost」に変更したいとします。次のように書いてみましょう。

しかし ' / 最後 /! s / ライン / おばけ / ' ファイル.txt > ゴースト2.txt


ここでわかるように、最後の行 (「last」という単語が含まれる) を除くすべての行で、「line」という単語が「ghost」という単語に置き換えられています。


行番号を使用してこれを行うこともできます。

しかし ' 3 4 s / ライン / / i' ファイル.txt > 夜.txt


この場合、3 行目と 4 行目は省略されていますが、1 行おきに「line」という単語が「night」という単語に置き換えられています。

複数のコマンド

では、複数のコマンドがある場合はどうなるでしょうか?一度に 1 つずつ実行するか、それとも一度にすべて実行して、時間と労力を節約しますか?

「最初」を「日」に、「2 番目」を「夜」に、「残り」を「幽霊」に変更したい場合はどうすればよいでしょうか。これを行うにはセミコロンを使用します。最後にセミコロンを付けるのを忘れないでください。

「i」フラグまたは「ignore」フラグを必ず指定する必要はありませんが、変換フレーズの後にスラッシュ (/) を必ず指定する必要があることに注意してください。

それでは、例で確認してみましょう。

しかし / 初め / / ; s / 2番 / / ; s / 三番目 / おばけ / ; s / 最後 / おばけ / ;' ファイル.txt > 組み合わせ.txt


結論

ストリーム エディタまたは SED は、単語またはパターンを選択して変換する方法です。これは実際には、Windows の「検索」および「置換」機能に相当するコマンドラインです。 SED コマンドは非常に複雑になる場合がありますが、少なくとも基本を知っていれば、すぐに取り組むことができます。 SED は実際には多くの機能を備えた非常に強力なツールです。 1 つのチュートリアルですべてをカバーすることはできませんが、SED の基本はカバーしました。本質的に、「s」コマンドを使用して特定の単語を変換する方法を学びました。「s」は置換を表します。単語を他の単語に置き換えたり、置換が行われる行を選択したり、置換を無効にしたりすることもできます。いずれにせよ、これは SED に関して最も簡単な部分です。

コーディングを楽しんでください!