Sed-pattern-buffer
ストリームエディター-パターンバッファー
ファイルに対して実行する基本的な操作の1つは、その内容を表示することです。 この目的のために、パターンバッファの内容を出力する print コマンドを使用できます。 それでは、パターンバッファについて詳しく学びましょう。
最初に、行番号、本の名前、著者、およびページ数を含むファイルを作成します。 このチュートリアルでは、このファイルを使用します。 都合に応じて任意のテキストファイルを使用できます。 テキストファイルは次のようになります。
次に、ファイルの内容を印刷します。
上記のコードが実行されると、次の結果が生成されます。
各行がなぜ2回表示されるのか疑問に思うかもしれません。 調べてみましょう。
SEDのワークフローを覚えていますか? デフォルトでは、SEDはパターンバッファの内容を出力します。 さらに、コマンドセクションに明示的に印刷コマンドを含めました。 したがって、各行は2回印刷されます。 でも心配しないで。 SEDには、パターンバッファのデフォルト印刷を抑制する -n オプションがあります。 次のコマンドはそれを示しています。
上記のコードが実行されると、次の結果が生成されます。
おめでとうございます。 期待どおりの結果が得られました。 デフォルトでは、SEDはすべての回線で動作します。 ただし、特定の回線でのみSEDを動作させることができます。 たとえば、次の例では、SEDは3行目でのみ動作します。 この例では、SEDコマンドの前にアドレス範囲を指定しています。
上記のコードが実行されると、次の結果が生成されます。
さらに、特定の行のみを印刷するようにSEDに指示することもできます。 たとえば、次のコードは2〜5のすべての行を出力します。 ここでは、コンマ(、)演算子を使用してアドレス範囲を指定しました。
上記のコードが実行されると、次の結果が生成されます。
また、ファイルの最後の行を表す特殊文字Dollar($)もあります。 それでは、ファイルの最後の行を印刷しましょう。
上記のコードが実行されると、次の結果が生成されます。
ただし、ドル($)文字を使用してアドレス範囲を指定することもできます。 以下の例は、3行目から最後の行までを出力します。
上記のコードが実行されると、次の結果が生成されます。
コンマ(、)演算子を使用してアドレス範囲を指定する方法を学びました。 SEDは、アドレス範囲の指定に使用できるさらに2つの演算子をサポートします。 最初はplus()演算子で、コンマ(、)演算子と共に使用できます。 たとえば、 *M、 n* は、行番号 M から始まる次の n 行を出力します。 分かりにくいですね。 簡単な例で確認しましょう。 次の例では、行番号2から始まる次の4行を出力します。
上記のコードが実行されると、次の結果が生成されます。
オプションで、チルダ(〜)演算子を使用してアドレス範囲を指定することもできます。 M〜n 形式を使用します。 これは、SEDが行番号Mで始まり、n(th)行ごとに処理する必要があることを示しています。 たとえば、 50〜5 は行番号50、55、60、65などに一致します。 ファイルから奇数行のみを印刷してみましょう。
上記のコードが実行されると、次の結果が生成されます。
次のコードは、ファイルの偶数行のみを出力します。
上記のコードが実行されると、次の結果が生成されます。