私はこのような文字列を持っています
<user>@<server>:<port>:/foo/bar
そして、ユーザー、サーバー、ポート、ディレクトリを抽出したいと思います。
ユーザーは簡単に抽出できます
echo <string> | awk -F"@" '{print $1;}'
ただし、サーバーは2つの異なる境界内にあります。これはawk
で可能ですか?
2つの cut
コマンドを組み合わせて、サーバー名を抽出できます。
echo <string> | cut -d":" -f1 | cut -d"@" -f2
説明:
echo <string> |
入力として文字列を使用cut -d":" -f1 |
フィールド区切り文字を:
に設定し、最初のフィールド(<user>@<server>
)を抽出しますcut -d"@" -f2
フィールド区切り文字を@
に設定し、seconフィールド(<server>
)を抽出しますはい、可能です-区切り文字に正規表現を使用します
$ echo '<user>@<server>:<port>:/foo/bar' | awk -F'@|:' '{print $1; print $2; print $3;print $4;}'
<user>
<server>
<port>
/foo/bar
または
$ echo '<user>@<server>:<port>:/foo/bar' | awk -F'[@:]' '{print $1; print $2; print $3;print $4;}'
<user>
<server>
<port>
/foo/bar
grep のみ、
grep -Eoi "[a-z/]{1,}" <<< "<user>@<server>:<port>:/foo/bar"
user
Server
port
/foo/bar