2010-11-22 3 views

答えて

0

bash自体の中にはありません。 sedのような外部ツールに委譲する必要があります。

0

ない水銀に精通し、しかし、あなたのURLを使用して、あなたは、2本のパイプで

echo 'ssh://[email protected]/srv/hg/repo' |grep -E --only-matching '\[email protected]' |cut --delimiter=\@ -f 1 

おそらくない最も効率的な方法を行うが、働くことができます。

3

あなたはかなり多くの文を必要とするか、外部ツールを呼び出す必要があります。私はsedがこれに最適だと思います。

あなたの文字列は、このような変数であると仮定すると、
sed -r -e 's|.*://(.*)@.*|\1|' <<< "$default" 
+0

私は前にその構造を見て覚えていません - '<<<' - 私はちょうど新しいことを学びました。通常、変数を 'sed'に' echo 'します。私はこのコンストラクトがより効率的だと思いますか? – Will

+0

エコーとパイプは全体のnotherサブシェルを意味しているのに対し、ここの文字列は処理中であるため、それは想像しています。 – Sorpigal

4

:あなたが行うことができます

url='default = ssh://[email protected]//srv/hg/repo' 

[[ $url =~ //([^@]*)@ ]] 

次に、あなたのユーザ名がここにある:

echo ${BASH_REMATCH[1]} 

これは動作しますBashバージョン3.2以上

関連する問題