si usano 3 operatori per namipolare le stringhe:
minimali:
se si usano le espressioni regolari per indicare la sottostringa (da eliminare o sostituire) verrà individuata in caso di ambiguità la sottostringa più piccola (o solo la prima nel caso della sostituzione).
- # sottrae dall'inizio della stringa
- % sottrae dalla fine della stringa
- / sostituisce una sottostringa con un'altra (solo la prima volta che viene incontrata)
massimali:
cercano di individuare la sottostringa più grande che corrisponde all'espressioni regolari (nel caso del modificatore // tutte le sottostringhe vengono sostituite)
- ## sottrae dall'inizio della stringa
- % sottrae dalla fine della stringa
- / sostituisce una sottostringa con un'altra (tutte le volte che viene incontrata)
esempio:
VAR="questa.sarebbe.una.stringa.di.esempio"
echo ${VAR#*.} → sarebbe.una.stringa.di.esempio
echo ${VAR##*.} → esempio
echo ${VAR%.*} → questa.sarebbe.una.stringa.di
echo ${VAR%%.*} → questa
echo ${VAR/st/ST} → queSTa.sarebbe.una.stringa.di.esempio
echo ${VAR//st/ST} → queSTa.sarebbe.una.STringa.di.esempio
esempio: ciclo che modifica le estensioni dei file
for f in *.txt
do
mv "$f" "${f/%txt/log}"
done