pax> echo a.b.js | sed 's/\.[^.]*$//'
a.b
pax> echo a.b.js | sed 's/^.*\.//'
js
отлично работает, поэтому вы можете просто использовать:
pax> FILE=a.b.js
pax> NAME=$(echo "$FILE" | sed 's/\.[^.]*$//')
pax> EXTENSION=$(echo "$FILE" | sed 's/^.*\.//')
pax> echo $NAME
a.b
pax> echo $EXTENSION
js
Команды, кстати, работают следующим образом.
Команда для NAME
заменяет символ "."
, за которым следует любое количество не "."
символов, до конца строки, без нуля (т. Е. Она удаляет все из последнего "."
в конец строки включительно). Это в основном не жадная замена с использованием трюков с регулярными выражениями.
Команда для EXTENSION
заменяет любое количество символов, за которыми следует символ "."
в начале строки, ничем (т. Е. Удаляет все, начиная от начала строки и заканчивая последней точкой включительно). , Это жадная замена, действие по умолчанию.