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

sedとgrepを使用したテキストの操作

sedなどのツール (ストリームエディタ)およびgrep (グローバル正規表現印刷)は、時間を節約し、作業を高速化するための強力な方法です。ユースケースを深く掘り下げる前に、後で行うテキスト操作に必要な正規表現(正規表現)について簡単に説明します。

正規表現とは何ですか?ログファイル、テキストファイル、またはコードの一部を処理する場合、

これらはすべて文字で構成されていることを理解する必要があります。ファイルの長さが長い場合、デバッグを容易にするために、特定のパターンを除外する必要があります。これらのユースケース全体で正規表現の例を見つけることができます。

グループ1:サーバーデータ

文字列が出現するファイルがあるとします:

では、site1をどのように除外しますか の詳細(上記のファイルは簡単な例です)。必要な情報を取得してエントリを操作することしかできませんか?

明らかに、ファイル全体に共通のパターン(「クラウド展開」)があることがわかります。これで、フィルタリング技術を使用して、grepを使用してファイルから情報を取得できるようになりました。 。これを「getregexnprint」として覚えています。

ユースケース1

異なるリージョンのサーバーが必要な場合は、grepを使用できます 次のように:

ユースケース2

ここで、IPに基づいてサーバーをフィルターで除外したいとします。次を使用して同じことを行うことができます:

ユースケース3

ここで、最初のgrepを見てください。 コマンド画像。システムのサブネット範囲を知っていても、コマンドはファイル全体に10.1の出現を出力しました。

このタイプのユースケースをどのように解決できますか?この問題は、次のような正規表現ベースの高度なフィルタリングを使用して処理できます。

この例は、grepの可能な使用法にすぎません。 。繰り返しになりますが、これは比較的小さなファイルであるため、上記のファイルを使用して必要なものを取得できます。 -v switchは検索条件を逆にします。つまり、grep ファイルsed-grep.txtを検索します <search-pattern>を除くすべての詳細を印刷します (この場合は10.1)。

ユースケース4

IPアドレスを置き換えて、それらのリージョン内のすべてのサーバーを別のサブネットに移動するとします。 sedを使用できます このユースケースの場合。

マニュアルページから、sed 次の形式を使用します:

sed [options] commands [file-to-edit]

このユースケースのコマンドは次のようになります:

このコマンドは次のように分類されます。

  • s 代替の略です。
  • % は区切り文字です(ここでは任意の文字を使用できます)。
  • <search pattern> 最初の%の後に表示されます 。
  • <replace pattern> 2番目の%の後に表示されます 。
  • g グローバル置換(ファイル全体を意味する)を表します。

または:

s%<search-pattern>%<replace-pattern>%g
ユースケース5

ファイル内のサーバーのリージョンを変更することもできます:

ユースケース6

このユースケースはより高度です。コメントのみを削除します(#sedを使用してファイルから :

このコマンドは、#の場合 行の最初の文字として表示され、その行を空白に置き換えます。その結果、このコマンドはファイルからコメントを削除する役割を果たします。

グループ2:/ etc / passwd

今回は/etc/passwdを含むいくつかのユースケースを見てみましょう。 。

ユースケース1

/etc/passwdファイルからユーザーを取得するとします。 ファイル。 sedを使用できます 次のように:

ユースケース2

/etc/passwdから最初の10人のユーザーのみを取得したい場合はどうなりますか ? sedを使用できます およびawk この目的のために(ここで私にご容赦ください):

このコマンドは次のように分類されます:

  • sed -n すべてを印刷しないことを意味します。
  • p 1行目から10行目を印刷します。
  • awk ここでは:を使用します フィールドセパレータとして使用し、最初の列を出力します。
ユースケース3

sedを使用して、テキストファイルの特定の範囲の行を削除します :

SELinuxのユースケース

これがsedの例です SELinuxを操作するためのコマンド:

結論

これは、読者にsedを使用する可能性のほんの一部を紹介するための私の試みです。 およびgrep 。これらのコマンドを使用して、多くのテキスト操作を行うことができます。詳細については、マニュアルページを使用してさまざまなオプションを参照してください。

[Red Hat Enterprise Linuxを試してみませんか?今すぐ無料でダウンロードしてください。]


Linux
  1. 複数のファイルテキストをSedに置き換えますか?

  2. リテラル文字列で sed -- 入力ファイルではありません

  3. パターンの前にテキストを追加する際に、大文字と小文字を区別しないで sed を使用する

  1. bash の改行でテキストをエコーする

  2. スペースを含む AWK およびファイル名。

  3. パターンとファイルの grep ペア

  1. grepを使用してファイル内のすべてのメールアドレスを一覧表示する

  2. SedまたはGrepを使用して正規表現に従って部分文字列を抽出しますか?

  3. Linuxで検索および検索コマンドを使用してファイルを検索する