我将如何在 bash 中用多个分隔符分隔字符串

ric*_*sim 5 bash

我将如何在 bash 中用多个字符分隔字符串。我想获取第一个 IP 地址。

inet addr:127.0.0.1  Mask:255.0.0.0
Run Code Online (Sandbox Code Playgroud)

我会这样做

echo "inet addr:127.0.0.1  Mask:255.0.0.0" | cut -d' ' -f2 | cut -d':' -f1 
Run Code Online (Sandbox Code Playgroud)

但我想将最后两个命令合并为一个命令。

我想得到

127.0.0.1

hee*_*ayl 4

使用awk,将字段分隔符设置为一个或多个空格/制表符或:,并获取第三个字段:

awk -F '[[:blank:]:]+' '{print $3}'
Run Code Online (Sandbox Code Playgroud)

请注意,这将得到上述字段分隔符分隔的第三个字段,该字段可能是也可能不是有效的 IP 地址;根据您的尝试cut,我假设输入是一致的。

例子:

% awk -F '[[:blank:]:]+' '{print $3}'  <<<'inet addr:127.0.0.1  Mask:255.0.0.0'
127.0.0.1
Run Code Online (Sandbox Code Playgroud)