Bash comodín para que coincida exactamente con n caracteres


8

¿Hay un comodín en bash para que coincida exactamente con 5 caracteres, acortando un patrón como ?????

Respuestas:


9

Aún no.

Con la extglobopción, bashagrega algunos de los kshoperadores de globbing extendidos pero no el {x,y}(pattern)uno.

En ksh93, usas:

{5}(?)

Con zshcon la extendedglobopción:

?(#c5)

(Notará que ninguno de ellos es más corto que ?????sin embargo).

En bash, puedes hacer:

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

aunque eso no es una mejora y se basa en $IFSno contener ?.


¿Alguno de estos permite usar una variable para 5?
Random832

@ Random832, sí, todos menos el tercero con bash(ese también funcionaría con ksh93 o zsh en la emulación sh / ksh). Con bash, puedes usar $(seq "$n" | tr -cd '\n' | tr '\n' '?')en su lugar.
Stéphane Chazelas

O bien $(yes '?' | tr -cd '?' | head -c $n), esto es divertido. Además, ¿no podría eliminar la dependencia de $ IFS poniéndola entre "comillas"?
Random832

@ Random832, no. Esta vez (y esa es probablemente la única vez que querrá hacer eso), desea usar el split+globoperador (dejando una expansión sin comillas) pero solo la globparte (desea que ?????se expanda ese patrón, lo que no sucedería) si lo citó $(...)) Tenga en cuenta que utiliza ese split+globoperador con su sin comillas $nque agrega otro requisito que $IFSno debe contener dígitos. Ese puede y debe citar.
Stéphane Chazelas
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.