スラッシュを削除するには sed を使用します。

スラッシュを削除するには sed を使用します。

次の内容を含むテキストファイルがあります。

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#^.*/##'

ヒント:

  • sedsedへの単一の呼び出しで複数のコマンドを実行できるため、from sedtoパイピングが必要ない場合がありますsed。どちらか一方sed -e 'cmd1' -e 'cmd2' ...またはsed 'cmd1;cmd2;...'両方が機能します。
  • パターン内でスラッシュをエスケープする必要がないように、コマンドに別の区切り文字を使用できます(私は区切り文字としてs使用します)。sed#

おすすめ記事