Caractère générique bash pour faire correspondre exactement n caractères


8

Y a-t-il un caractère générique dans bash pour correspondre exactement à 5 caractères, raccourcissant un motif comme ?????

Réponses:


9

Pas encore.

Avec l' extgloboption, bashajoute certains des kshopérateurs de globalisation étendus mais pas {x,y}(pattern)celui.

Dans ksh93, vous utilisez:

{5}(?)

Avec zshavec l' extendedgloboption:

?(#c5)

(vous remarquerez qu'aucun d'eux n'est plus court que ?????si).

Dans bash, vous pourriez faire:

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

bien que ce ne soit guère une amélioration et repose sur le fait de $IFSne pas contenir ?.


Est-ce que l'un d'eux permet d'utiliser une variable pour 5?
Random832

@ Random832, oui tous sauf le 3ème avec bash(celui-ci fonctionnerait également avec ksh93 ou zsh dans l'émulation sh / ksh). Avec bash, vous pouvez utiliser à la $(seq "$n" | tr -cd '\n' | tr '\n' '?')place.
Stéphane Chazelas

Ou $(yes '?' | tr -cd '?' | head -c $n)- c'est amusant. De plus, ne pourriez-vous pas supprimer la dépendance $ IFS en la mettant entre "guillemets"?
Random832

@ Random832, non. Cette fois (et c'est probablement la seule fois que vous voudrez le faire), vous voulez utiliser l' split+globopérateur (en laissant une expansion sans guillemets) mais uniquement la globpartie (vous voulez que ce ?????modèle soit développé, ce qui ne se produirait pas) si vous avez cité $(...)). Notez que vous utilisez cet split+globopérateur avec vos guillemets, $nce qui ajoute une autre exigence qui $IFSne doit pas contenir de chiffres. Celui que vous pouvez et devez citer.
Stéphane Chazelas
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.