sed -e “s/-.*$//”

sed -e “s/-.*$//”

此命令中的 -.*$/ 是什么意思?请帮我解释一下。

echo -n full | sed -e "s/-.*$//" 

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

答案1

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

例如:aajaaa-woijsdfljkwe94变成aajaaa

另外,需要注意的是,它*是“贪婪的”,这意味着它将匹配尽可能多的字符。因此,例如:alasdf-slwddo-sdf变成alasdf,而不是alasdf-slwddo

答案2

本质上,此命令将删除从第一个破折号(“ - ”)到输入末尾的所有内容。

答案3

$ 是行尾正则表达式,因此它读取以 - 开头的行,后面跟着行上的任何内容。

答案4

  • .是任意字符。
  • *是“零次或多次”

因此,.*是“任何字符,零次或多次”

相关内容