Bash通配符精确匹配n个字符


Answers:


9

还没。

使用该extglob选项,bash添加了一些ksh扩展的全局操作符,但没有{x,y}(pattern)一个。

在中ksh93,您使用:

{5}(?)

随着zshextendedglob选项:

?(#c5)

(您会发现它们都比以前短?????)。

在中bash,您可以执行以下操作:

$(printf '%.0s?' {1..5})

尽管这几乎不是一个改进,并且依赖于$IFS不包含?


这些中的任何一项是否允许使用变量5?
2015年

@ Random832,是的,除了第三个以外bash,其他都可以(尽管它也可以在sh / ksh仿真中与ksh93或zsh一起使用)。使用bash,您可以$(seq "$n" | tr -cd '\n' | tr '\n' '?')改用。
斯特凡Chazelas

或者$(yes '?' | tr -cd '?' | head -c $n)-这很有趣。另外,您不能通过将$ IFS依赖项放在“引号”中来删除它吗?
Random832'2015-4-28

@ Random832,不。这次(这可能是您唯一想这样做的时间),您确实想使用split+glob运算符(不引号扩展),而只使用glob部分(您希望?????扩展该模式,这不会发生)如果引用$(...))。请注意,您将该split+glob运算符与未加引号一起使用,$n这会添加另一个$IFS必须不包含数字的要求。您可以并且应该引用的那个。
斯特凡Chazelas
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.