私はまだ使い始めたばかりsed
で、出力から IP アドレスを抽出するためにこれを使用するつもりです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
注: およびytmti
は、実際には およびjjggy
のようなテキストの代わりとなります。Pinging unix.stackexchange.com
with 32 bytes of data:
awk
出力を解析するには を使用する方がよい解決策だと思いますping
が、 に慣れたいと思いますsed
。
答え1
の置換コマンドは、sed
最初のセクションで一致するすべての文字を 2 番目のセクションのすべての文字に置き換えるため、または同様のコマンドが必要になり.*
、次のように保存する部分のみをグループ化します。
echo " ytmti (192.188.2.3) jjggy" | sed 's:^.*(\([^)]*\).*$:\1:'
[^)]*
IP をハードコードして、いずれかに一般化することを避けるために、これを使用していることに注意してください。結果は次のようになります。
192.188.2.3
答え2
フィールドセパレータ変数の使用awk
:
echo "ytmti (192.188.2.3) jjggy" | awk -F'[)(]' '{print $2}'
192.188.2.3
答え3
次のようなこともできます:
echo 'ytmti (192.188.2.3) jjggy' | tr -dc '0-9.'