Что означает -. * $/ В этой команде? Пожалуйста, помогите мне расшифровать это.
echo -n full | sed -e "s/-.*$//"
Я знаю, что делает sed и все такое, я просто хочу знать, что это такое. * $ Part.
.
обозначает любой символ, *
означает совпадение с любым количеством (от 0 до бесконечности) предыдущего совпадения, а $
обозначает конец строки. Таким образом, эта команда sed будет соответствовать -
за ней будут следовать все символы до тех пор, пока она не найдет конец строки и не заменит ее ничем, т.е. удалит ее.
Так, например: aajaaa-woijsdfljkwe94
становится aajaaa
Также следует отметить, что *
является «жадным», что означает, что он будет соответствовать как можно большему числу символов. Так, например: alasdf-slwddo-sdf
становится alasdf
, а не alasdf-slwddo
.
По сути, эта команда удаляет все от первой черты ('-') до конца ввода.
$ - это конец строки регулярного выражения, поэтому он читает строку с символом -, за которым следует что-либо в строке.
.
это любой персонаж.*
это "ноль или более раз"Таким образом,. .*
- это «любой символ, ноль или более раз»