sed -e "s/-.*$//"

1 linux bash shell sed

此命令中的 -.*$/ 是什么意思?请帮我破译这个。

echo -n full | sed -e "s/-.*$//" 
Run Code Online (Sandbox Code Playgroud)

我知道 sed 的作用以及所有这些,我只想知道 -.*$ 部分是什么。

小智 9

.代表任意字符,*表示匹配前一个匹配的任意数量(0 到无限之间),$代表行尾。所以这个 sed 命令将匹配-其后的所有字符,直到它找到行尾并将其替换为空,即删除它。

例如:aajaaa-woijsdfljkwe94变成aajaaa

另外,应该注意的*是'greedy',这意味着它将匹配尽可能多的字符。因此,例如:alasdf-slwddo-sdf变成alasdf,而不是alasdf-slwddo