テキストファイルには、事前定義された形式ではない文字の連続ストリームが含まれています。一部のファイル形式はテキストファイルの上に開発されていますが(例: JSON 、 YAML )、テキストデータが特定の形式で存在することを期待します。通常の'.txt'
ファイルにはそのような規則はありません。したがって、テキストファイルから特定の行、フレーズ、または文字列を取得するには、一般的なLinuxツールを使用します。
grepコマンド Linuxでは、文字列またはファイル内の部分文字列またはテキストパターンを検索するために使用されます。サブストリングが見つかった行を印刷します。
grepコマンドを使用するための構文 は次のとおりです:
$ grep <substring> <filename/standard input>
たとえば、サブストリング「名前」を検索するには 」ファイル‘ test.txt ‘(その内容はスクリーンショットに表示されています)、次を実行します。
$ grep "Name" test.txt
今日は、メールを抽出する方法を見ていきます grepコマンドを使用してテキストファイルからアドレスを指定します 。
ご存知のとおり、メールアドレスは次の形式で表示されます:
<user_id>@<domain>.<subdomain>
ここでは、 user_id はユーザーが選択した一意の識別子文字列であり、ドメインとサブドメインはメールサービスプロバイダーを表します(例: gmail.com 。
ドメイン名とサブドメイン名にはアルファベットのみを含めることができますが、 user_id アルファベット、数字、およびピリオド(.)
などの他の一般的な文字を含めることができます アンダースコア(_)
。
これは検索対象の明確なパターンであるため、'-e'
を使用できます。 grepのフラグ。これにより、ファイルから抽出するために、部分文字列の代わりに正規表現パターンを指定できます。
したがって、'-e'
を使用したgrepの構文 は:
$ grep -e <regular_expression> <filename/standard input>
前に説明した電子メールアドレスのパターンに基づいて、次の正規表現を作成できます。
[a-zA-Z0-9._]\+@[a-zA-Z]\+.[a-zA-Z]\+
ここでは、'a-zA-Z'
任意のアルファベットを表します。'0-9'
数値を表します、'._'
ピリオドまたはアンダースコアを表します。 '\+'
の文字に注意してください 角かっこで囲まれた文字セットが1回以上表示される必要があることを表します。
この正規表現を実行して、ファイル‘ test2.txtからメールアドレスを抽出します ‘。
まず、ファイル test2.txtの内容を表示します は:
$ cat test2.txt
次に、次のコマンドを実行して、ファイルからメールアドレスを抽出します。
$ grep -e "[a-zA-Z0-9._]\+@[a-zA-Z]\+.[a-zA-Z]\+" test2.txt
ご覧のとおり、メールアドレスはGrepによって正常に識別されました。ただし、ファイル内の完全な行とともに表示されています。
見つかったメールIDだけを表示するには、'-o'
を使用します '-e'
とともにフラグを立てる 示されているように。
$ grep -oe "[a-zA-Z0-9._]\+@[a-zA-Z]\+.[a-zA-Z]\+" test2.txt
結論
この記事では、便利なコマンドラインツール Grep を使用して、Linuxでテキストファイルからメールアドレスを抽出する方法を説明しました。 。これらのメールアドレスは、リダイレクトを使用してファイルに書き込むこともできます。
ご質問やご意見がございましたら、下のコメント欄でお知らせください。