HTMLリンクを切り取る方法は?

HTMLリンクを切り取る方法は?

入力する:

<a href="docs/2015-05-foobar/foobar.sh">foobar.sh</a>

出力

<a href="foobar.sh">foobar.sh</a>

質問:「docs/2015-05-foobar/」を削除するにはどうすればよいですか?文字列は「

答え1

echo '<a href="docs/2015-05-foobar/foobar.sh">foobar.sh</a>' |\
  sed 's/\(.*\)href="\(.*\)\/\(.*\)"\(.*\)/\1href="\3"\4/'

あなたのため:

<a href="foobar.sh">foobar.sh</a>

コンテキストがある場合は、sed適切なHTMLパーサーを使用して項目を検索し、パーサーが提供するアクセス方法を使用して見つかった要素<a>hrefアクセスします。

これらの\(.*\)部分は何でも一致し、一致するコンテンツはスタンバイコールバック\1で使用できます。\3追加の文字(href="、、、)は一致する必要があります(スラッシュは代替パターンの開始と終了を示すためにも使用されるため、エスケープされます。一致は貪欲であるため、\/2番目の文字の前の最後のスラッシュはnotで一致します)。必要に応じて一致する部分を出力から削除します。"\/"\2

答え2

そしてsed

$ echo '<a href="docs/2015-05-foobar/foobar.sh">foobar.sh</a>' |
  sed -e 's,".*/\([^/]*"\),"\1,'
<a href="foobar.sh">foobar.sh</a>

関連情報