Korzystanie sed:
$ echo "$string" | sed -e "s/^$prefix//" -e "s/$suffix$//"
o-wor
ciągu polecenia sed, postać ^
pasuje tekst począwszy $prefix
i spływu tekst $
mecze kończąc $suffix
.
Adrian Frühwirth ma kilka dobrych punktów w komentarzach poniżej, ale w tym celu może być bardzo przydatny sed
. Fakt, że zawartość prefiksu $ i sufiksu $ jest interpretowana przez sed może być dobra lub zła - tak długo, jak zwracasz uwagę, powinieneś być w porządku. Piękno jest, można zrobić coś takiego:
$ prefix='^.*ll'
$ suffix='ld$'
$ echo "$string" | sed -e "s/^$prefix//" -e "s/$suffix$//"
o-wor
która może być to, co chcesz, i to zarówno hodowcy i mocniejsze niż bash zmiennej zastąpienia. Jeśli pamiętasz, że z wielką siłą wiąże się wielka odpowiedzialność (jak mówi Spiderman), powinieneś być w porządku.
Szybkie wprowadzenie do sed można znaleźć na http://evc-cit.info/cit052/sed_tutorial.html
notatkę dotyczącą powłoki i jej stosowanie łańcuchów:
Dla konkretnego przykładu podanego następujący będzie pracować także:
$ echo $string | sed -e s/^$prefix// -e s/$suffix$//
... ale tylko dlatego, że:
- echo nie obchodzi mnie, jak wiele ciągi są w liście argumentów, a
- Brak miejsca w $ prefix i $ przyrostkiem
To ogólnie dobra praktyka, aby zacytować ciąg w wierszu polecenia, ponieważ nawet jeśli zawiera spacje zostanie przedstawione do polecenia jako pojedynczy argument. Cytujemy $ prefix i $ sufiks z tego samego powodu: każde polecenie edycji sed zostanie przekazane jako jeden ciąg znaków. Używamy podwójnych cudzysłowów, ponieważ pozwalają one na zmienną interpolację; Gdybyśmy użyli pojedynczych cudzysłowów, komenda sed dostałaby dosłowne $prefix
i $suffix
, co z pewnością nie jest tym, czego chcieliśmy.
Zauważcie też, że używam pojedynczych cudzysłowów przy ustawianiu zmiennych prefix
i suffix
. Z pewnością nie chcemy, aby cokolwiek w smyczkach było interpretowane, więc pojedynczo je cytujemy, więc nie ma miejsca interpolacja. Ponownie, może nie być to konieczne w tym przykładzie, ale jest to bardzo dobry nawyk.
Spójrz [Advanced Bash-Scripting Guide] (http://tldp.org/LDP/abs/html/string-manipulation.html) – tarrsalah
Bądź bardzo ostrożny podczas łączenia z tak zwanym Advanced Bash Scripting Guide; zawiera mieszaninę dobrych rad i okropnych. – tripleee