I have a string like this
<user>@<server>:<port>:/foo/barand I would like to extract the user, server, port and directory.
The user can easily be extracted by
echo <string> | awk -F"@" '{print $1;}'But the server lies within two different delimeters. Is this possible via awk?
3 Answers
You can combine two cut commands to extract the server name:
echo <string> | cut -d":" -f1 | cut -d"@" -f2Explanation:
echo <string> |use the string as inputcut -d":" -f1 |set field delimiter to:and extract the first field (<user>@<server>)cut -d"@" -f2set filed delimiter to@and extract the secon field (<server>)
Yes it is possible - using a regular expression for the delimiter
$ echo '<user>@<server>:<port>:/foo/bar' | awk -F'@|:' '{print $1; print $2; print $3;print $4;}'
<user>
<server>
<port>
/foo/baror
$ echo '<user>@<server>:<port>:/foo/bar' | awk -F'[@:]' '{print $1; print $2; print $3;print $4;}'
<user>
<server>
<port>
/foo/bar How about grep only,
grep -Eoi "[a-z/]{1,}" <<< "<user>@<server>:<port>:/foo/bar"
user
Server
port
/foo/bar