GNU/Linux >> Znalost Linux >  >> Linux

Regulární výraz se sed

Váš hlavní problém je, že se pokoušíte použít / jako oddělovač, když / je to také postava, kterou budete analyzovat.

Budete muset použít jiný oddělovač, například trubku. Spojte vše a / a poté použijte \( a \) (skupiny zachycení) ohraničující část, kterou chcete extrahovat, a použijte \1 , čímž se skupina vykreslí:

echo "yourstring" | sed 's|.*/\([^/]*\)$|\1|'

Možná to bude fungovat bez zachycovacích skupin:stačí vypustit vše až do posledních / :

echo "yourstring" | sed 's|.*/||'

Proč nepoužít basename pro tohle? Například:

for file in *mp3; do basename "$file"; done

Linux
  1. Manipulace s textem na příkazovém řádku pomocí sed

  2. Použití více vzorů najednou pomocí příkazu Sed

  3. Jak dosáhnout přenositelnosti pomocí Sed -i (úpravy na místě)?

  1. Doplnění s „sed“?

  2. Barvení výstupu ocasu pomocí Sed?

  3. Proč `\d` nefunguje v regulárních výrazech v sed?

  1. Potřebujete uniknout z regulárních znaků v Sed, aby byly interpretovány jako regulární znaky?

  2. Jak odstranit znak \r pomocí sed

  3. Nula vyplňte čísla na 2 číslice se sed