przykład wyrażenie:Jak podzielić ciąg na ukośnik w bash
/gasg/string
oczekiwany wynik: string
znaków do usunięcia: wszystkie znaki między "/" Symbole, w tym symbole
przykład wyrażenie:Jak podzielić ciąg na ukośnik w bash
/gasg/string
oczekiwany wynik: string
znaków do usunięcia: wszystkie znaki między "/" Symbole, w tym symbole
z sed
:
$ echo "/gasg/string" | sed -e 's/\/.*\///g'
string
Z buil w bash ciąg manipulacji:
$ s="/gag/string"
$ echo "${s##/*/}"
string
struny wyglądają dokładnie jak ścieżek Unix. Dlatego można też użyć narzędzia basename
- to returnes ostatnią porcję danego Unix ścieżki:
$ basename "/gag/string"
string
# It works with relative paths and spaces too:
$ basename "gag/fas das/string bla bla"
string bla bla
Pierwszy ukośnik w rozszerzeniu parametrów nie jest konieczny. Cytaty dotyczące zadania są w tym przypadku niezbędne, ale powinieneś używać ich do ekspansji z przyzwyczajenia. –
Zgadzam się, że pierwsze '/' nie jest konieczne, ale dodałem je, aby zilustrować ten punkt. –
Twoje struny wyglądają dokładnie tak, jak nazwy ścieżek Unix. - Tak, miałem zamiar zdobyć ostatnią partię podanej ścieżki i przy użyciu nazwy płyty tak samo jak "find -exec basename {} \;" co jest dla mnie genialne! Dziękuję za wskazówkę. – user1306777
awk także - użyj ukośnika jako separatora i druku ostatniego pola
echo "/gas/string" | awk -F/ '{print $NF}'
lub wyciąć - ale że będzie działać tylko wtedy, gdy mają taką samą liczbę katalogów strip
echo "/gasg/string" |cut -d/ -f 3
można użyć bash łańcuchach
'batween"/"symbols' Co powinno zająć, jeśli jest tylko jeden ukośnik, lub nie ma żadnych szwów? Lub tekst przed pierwszym ukośnikiem? –