次の内容を含むテキストファイルがあります。
https://git.centos.org/git/rpms/abc.git
https://git.centos.org/git/rpms/abc.git/
https://git.centos.org/git/rpms/abc
次のコマンドを実行すると、
reponame=$(echo $url | awk -F/ '{print $NF}' | sed -e 's/.git\/$//' | sed -e 's/.git//')
echo $reponame
私はその資格があります
アルファベット
で終わる行では失敗します.git/
が、他の2つの場合には機能します。
ベストアンサー1
awkを使用して最後のフィールドを印刷する前に、末尾のスラッシュを削除する必要があります。それ以外の場合、最後のフィールドは空になります。
使用
echo "$url" | sed -e 's#/$##' -e 's/\.git$//' | awk -F / '{print $NF}'
でも
echo "$url" | sed -e 's#/$##' -e 's/\.git$//' -e 's#^.*/##'
ヒント:
sed
sedへの単一の呼び出しで複数のコマンドを実行できるため、fromsed
toパイピングが必要ない場合がありますsed
。どちらか一方sed -e 'cmd1' -e 'cmd2' ...
またはsed 'cmd1;cmd2;...'
両方が機能します。- パターン内でスラッシュをエスケープする必要がないように、コマンドに別の区切り文字を使用できます(私は区切り文字として
s
使用します)。sed
#