我刚刚开始使用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)
注:ytmti和jjggy真正替身文字像Pinging unix.stackexchange.com和with 32 bytes of data:。
我认为 usingawk可能是解析ping输出的更好解决方案,但我想习惯sed.
替换命令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)