だから私はこの文字列を持っています:
[email protected]:/home/some/directory/file
ディレクトリアドレスを抽出したいだけです。つまり、「:」文字の後のビットのみを取得し、次のようにします。
/home/some/directory/file
ありがとう。
$ var変数の長さが固定されていないため、カットコマンドが機能しないように汎用コマンドが必要です。
Sedの使用:
$ [email protected]:/home/some/directory/file
$ echo $var | sed 's/.*://'
/home/some/directory/file
完全を期すため、カットを使用
cut -d : -f 2 <<< $var
そして、bashのみを使用します。
IFS=: read a b <<< $var ; echo $b
これも行います。
echo $var | cut -f2 -d":"
これでうまくいくはずです:
$ echo "$var" | awk -F':' '{print $NF}'
/home/some/directory/file
使用しているシェルを言うことはありません。 BashなどのPOSIX互換の場合、パラメーターの展開で必要な処理を実行できます。
パラメータ拡張
...
${parameter#Word}
最小プレフィックスパターンを削除します。
Word
は、パターンを生成するために展開されます。パラメータを展開すると、parameter
が生成され、パターンと一致するプレフィックスの最小部分が削除されます。
言い換えれば、あなたは書くことができます
$var="${var#*:}"
*:
に一致するものはすべて$var
から削除されます(つまり、最初の:
までのすべて)。最後の:
まで一致させたい場合は、##
の代わりに#
を使用できます。
これはすべて、削除する部分に:
が含まれていないことを前提としています(IPv4アドレスには当てはまりますが、IPv6アドレスには当てはまりません)
awk -F: '{print $2}' <<< $var