2016-07-08 16 views
1

私はbashで始まっています。私はそれを解析している.txtファイルで自分のipを見つけたいと思っています。 これはファイルの一部の例です: "Direc。inet:192。****** Difus .:"bashで2つのパターンの間から文字列を取り出す方法

私が考えているのは、 "inet:"と " "今までの私の最大のアプローチは、 "grep inet:"で全行を取得することですが、ipを取得する方法はわかりません。

ありがとうございました!救助へ

答えて

0

あなたは、Linuxにしているので、あなたがGNU grep-o-Pオプションを活用することができます。

grep -oP '(?<= inet:)[^ ]+' file.txt 

例:

$ grep -oP '(?<= inet:)[^ ]+' <<<'Direc. inet:192.****** Difus.:' 
192.****** 
  • -ogrepするように伝えます各行の一致する部分のみを出力します。

  • -Pはせず、ルックビハインドに(この場合は、inet:)サブ発現を可能にするよう(?<= inet:)などのアサーションが、マッチングに、参加サポートPCREs(Perl互換正規表現)のためのサポートを活性化は、一致した文字列の一部としてを取得しました。

  • [^ ]+は、inet:以降のすべてを最初のスペース文字までキャプチャします。文字セット[^ ]は、スペース(^)ではない任意の文字に一致し、+はこのセットに1回以上一致します)。

1

たPerl:

perl -ne 'print $1, "\n" if /inet:([^ ]+)/' 
  • -nラインによって入力ラインを読み出します。
  • [^ ]
  • はスペース
  • +ない文字が1回以上
  • (...)
  • は、キャプチャグループを作成し、存在していなければならない意味の文字と一致し、最初のキャプチャグループは $1
0

として参照されますawkgrepの組み合わせを試してください。ソリューションの下でLink 1を助けるかもしれません。 Lin 2

+0

[リンクのみの回答](http://meta.stackoverflow.com/tags/link-only-answers/info)は避けてください。 – mklement0

関連する問題