使用 sed 提取文本无法按预期工作

use*_*496 4 sed awk

我刚刚开始使用sed,我打算用它从ping输出中提取 IP 地址。这就是我正在努力实现的目标:

输入文本:

ytmti (192.188.2.3) jjggy
Run Code Online (Sandbox Code Playgroud)

所需的输出:

192.188.2.3
Run Code Online (Sandbox Code Playgroud)

我正在尝试的命令:

echo "ytmti (192.188.2.3) jjggy" | sed 's:\((\(192.188.2.3\))\):\2:' 
Run Code Online (Sandbox Code Playgroud)

电流输出:

ytmti 192.188.2.3 jjggy
Run Code Online (Sandbox Code Playgroud)

注:ytmtijjggy真正替身文字像Pinging unix.stackexchange.comwith 32 bytes of data:

我认为 usingawk可能是解析ping输出的更好解决方案,但我想习惯sed.

Bir*_*rei 5

替换命令sed将第一部分中匹配的所有字符替换为第二部分的所有字符,因此您将需要.*或类似并仅对要保存的部分进行分组,例如:

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

请注意,我使用[^)]*that 避免对 IP 进行硬编码并将其概括为其中任何一个。它产生:

192.188.2.3
Run Code Online (Sandbox Code Playgroud)