zsh为模式替换指定多个字符
这个 结果如下:zsh为模式替换指定多个字符,zsh,Zsh,这个 结果如下: print Contact\ us,\ Blog/(:l:gs/ /-) 如何更改该, 我试过: contact-us,-blog 没有成功 编辑: 我看到它使用字符序列作为字符串来替换,所以这里没有模式。 有没有比顺序使用多个:gs更好的方法,当然也不使用像sed这样的外部命令?你确定print Contact\us、\Blog/(:l:gs/-)甚至是有效的zsh代码吗?冒号修饰符只能用于历史扩展、参数扩展和文件名生成,而您似乎没有使用上述任何一种。如果您试图进行参数扩
print Contact\ us,\ Blog/(:l:gs/ /-)
如何更改该,
我试过:
contact-us,-blog
没有成功
编辑:
我看到它使用字符序列作为字符串来替换,所以这里没有模式。
有没有比顺序使用多个
:gs
更好的方法,当然也不使用像sed
这样的外部命令?你确定print Contact\us、\Blog/(:l:gs/-)
甚至是有效的zsh代码吗?冒号修饰符只能用于历史扩展、参数扩展和文件名生成,而您似乎没有使用上述任何一种。如果您试图进行参数扩展,那么语法将是s=“联系我们,Blog”&&print${s:l:gs/-}
。无论如何,您要查找的是setopt histsubspattern&&s=“联系我们,博客”&&print${s:l:gs/[,]/-}
。如果您不想修改全局选项,也可以使用setopt localoptions
。Ref:。如果存在名为的目录,则该选项有效,\Blog/
。。有了这个setopt
它现在就可以工作了!起初,我认为您已经找到了一些神奇的方法来执行参数扩展,而无需指定参数。。。那太棒了。@4ae1e1有${:-foo}
是一个默认值扩展,没有实际参数,但结果可以与任何其他扩展一样嵌套。例如,用${${:-foo}f}
去掉前面的f
。您确定print Contact\us、\Blog/(:l:gs/-)
甚至是有效的zsh代码吗?冒号修饰符只能用于历史扩展、参数扩展和文件名生成,而您似乎没有使用上述任何一种。如果您试图进行参数扩展,那么语法将是s=“联系我们,Blog”&&print${s:l:gs/-}
。无论如何,您要查找的是setopt histsubspattern&&s=“联系我们,博客”&&print${s:l:gs/[,]/-}
。如果您不想修改全局选项,也可以使用setopt localoptions
。Ref:。如果存在名为的目录,则该选项有效,\Blog/
。。有了这个setopt
它现在就可以工作了!起初,我认为您已经找到了一些神奇的方法来执行参数扩展,而无需指定参数。。。那太棒了。@4ae1e1有${:-foo}
是一个默认值扩展,没有实际参数,但结果可以与任何其他扩展一样嵌套。例如,用${${:-foo}#f}
去掉前面的f
。
print Contact\ us,\ Blog/(:l:gs/ ,/-)
print Contact\ us,\ Blog/(:l:gs/[ ,]/-)