我有一个这样的字符串
<user>@<server>:<port>:/foo/bar
Run Code Online (Sandbox Code Playgroud)
我想提取用户、服务器、端口和目录。
用户可以通过以下方式轻松提取
echo <string> | awk -F"@" '{print $1;}'
Run Code Online (Sandbox Code Playgroud)
但是服务器位于两个不同的分隔符内。这可能通过awk吗?
您可以组合两个cut命令来提取服务器名称:
echo <string> | cut -d":" -f1 | cut -d"@" -f2
Run Code Online (Sandbox Code Playgroud)
解释:
echo <string> | 使用字符串作为输入 cut -d":" -f1 |将字段分隔符设置为:并提取第一个字段 ( <user>@<server>)cut -d"@" -f2将@字段分隔符设置为并提取第二个字段 ( <server>)是的,这是可能的 - 使用正则表达式作为分隔符
$ echo '<user>@<server>:<port>:/foo/bar' | awk -F'@|:' '{print $1; print $2; print $3;print $4;}'
<user>
<server>
<port>
/foo/bar
Run Code Online (Sandbox Code Playgroud)
或者
$ echo '<user>@<server>:<port>:/foo/bar' | awk -F'[@:]' '{print $1; print $2; print $3;print $4;}'
<user>
<server>
<port>
/foo/bar
Run Code Online (Sandbox Code Playgroud)