sed を使用したテキスト抽出は期待どおりに機能しません。

sed を使用したテキスト抽出は期待どおりに機能しません。

使い始めたばかりで、出力からIPアドレスを抽出するためにsed使用する予定です。pingこれが私が達成したいものです:

テキスト入力:

ytmti (192.188.2.3) jjggy

希望の出力:

192.188.2.3

私が試しているコマンドは次のとおりです。

echo "ytmti (192.188.2.3) jjggy" | sed 's:\((\(192.188.2.3\))\):\2:' 

現在の出力:

ytmti 192.188.2.3 jjggy

注:ytmtiandは実際にjjggyandのようなテキストを置き換えます。Pinging unix.stackexchange.comwith 32 bytes of data:

私の考えでは、を使用することがawk出力を解析するためのより良い解決策かもしれませんが、ping慣れたいと思いますsed

ベストアンサー1

置換コマンドは、最初の部分で一致するすべての文字を2番目の部分のすべての文字に置き換えるため、保存したい部分だけがsed必要または類似してグループ化されます。たとえば、次のようになります。.*

echo " ytmti (192.188.2.3) jjggy" | sed 's:^.*(\([^)]*\).*$:\1:'

[^)]*IPをハードコードして一般化するのを防ぐためにこれを使用することに注意してください。それは次のものを生成します:

192.188.2.3

おすすめ記事