此命令中的 -.*$/ 是什么意思?请帮我解释一下。
echo -n full | sed -e "s/-.*$//"
我知道 sed 的作用以及所有这些,我只想知道这个 -.*$ 部分是什么。
答案1
.
代表任意字符,*
表示匹配任意数量(0 到无限)的上一个匹配,$
代表行尾。因此,此 sed 命令将匹配-
其后的所有字符,直到找到行尾并将其替换为空,即删除它。
例如:aajaaa-woijsdfljkwe94
变成aajaaa
另外,需要注意的是,它*
是“贪婪的”,这意味着它将匹配尽可能多的字符。因此,例如:alasdf-slwddo-sdf
变成alasdf
,而不是alasdf-slwddo
。
答案2
本质上,此命令将删除从第一个破折号(“ - ”)到输入末尾的所有内容。
答案3
$ 是行尾正则表达式,因此它读取以 - 开头的行,后面跟着行上的任何内容。
答案4
.
是任意字符。*
是“零次或多次”
因此,.*
是“任何字符,零次或多次”