私はbashで始まっています。私はそれを解析している.txtファイルで自分のipを見つけたいと思っています。 これはファイルの一部の例です: "Direc。inet:192。****** Difus .:"bashで2つのパターンの間から文字列を取り出す方法
私が考えているのは、 "inet:"と " "今までの私の最大のアプローチは、 "grep inet:"で全行を取得することですが、ipを取得する方法はわかりません。
ありがとうございました!救助へ
私はbashで始まっています。私はそれを解析している.txtファイルで自分のipを見つけたいと思っています。 これはファイルの一部の例です: "Direc。inet:192。****** Difus .:"bashで2つのパターンの間から文字列を取り出す方法
私が考えているのは、 "inet:"と " "今までの私の最大のアプローチは、 "grep inet:"で全行を取得することですが、ipを取得する方法はわかりません。
ありがとうございました!救助へ
あなたは、Linuxにしているので、あなたがGNU grep
の-o
と-P
オプションを活用することができます。
grep -oP '(?<= inet:)[^ ]+' file.txt
例:
$ grep -oP '(?<= inet:)[^ ]+' <<<'Direc. inet:192.****** Difus.:'
192.******
-o
grep
するように伝えます各行の一致する部分のみを出力します。
-P
はせず、ルックビハインドに(この場合は、inet:
)サブ発現を可能にするよう(?<= inet:)
などのアサーションが、マッチングに、参加サポートPCREs(Perl互換正規表現)のためのサポートを活性化は、一致した文字列の一部としてを取得しました。
[^ ]+
は、inet:
以降のすべてを最初のスペース文字までキャプチャします。文字セット[^ ]
は、スペース(^
)ではない任意の文字に一致し、+
はこのセットに1回以上一致します)。
たPerl:
perl -ne 'print $1, "\n" if /inet:([^ ]+)/'
-n
ラインによって入力ラインを読み出します。 [^ ]
+
ない文字が1回以上 (...)
$1
[リンクのみの回答](http://meta.stackoverflow.com/tags/link-only-answers/info)は避けてください。 – mklement0