Bash jolly per abbinare esattamente n caratteri


8

Esiste un carattere jolly in bash per abbinare esattamente 5 caratteri, accorciando uno schema come ?????

Risposte:


9

Non ancora.

Con l' extglobopzione, bashaggiunge alcuni degli kshoperatori di globbing estesi ma non {x,y}(pattern)quello.

In ksh93, usi:

{5}(?)

Con zshcon l' extendedglobopzione:

?(#c5)

(noterai che nessuno di loro è più corto di ?????quanto non lo sia).

In bash, potresti fare:

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

anche se questo non è certo un miglioramento e si basa sul $IFSnon contenere ?.


Qualcuno di questi consente l'utilizzo di una variabile per 5?
Casuale 832,

@ Random832, sì tutti tranne il 3 bash(quello funzionerebbe anche con ksh93 o zsh nell'emulazione sh / ksh). Con bash, $(seq "$n" | tr -cd '\n' | tr '\n' '?')invece , potresti usare .
Stéphane Chazelas,

Oppure $(yes '?' | tr -cd '?' | head -c $n)- questo è divertente. Inoltre, non potresti rimuovere la dipendenza $ IFS inserendola tra "virgolette"?
Casuale 832,

@ Random832, no. Questa volta (e questa è probabilmente l'unica volta che vorrai mai farlo), vuoi usare l' split+globoperatore (lasciando un'espansione non quotata) ma solo la globparte (vuoi che quel ?????modello si espanda, il che non accadrebbe se hai citato $(...)). Si noti che si utilizza split+globquell'operatore con il proprio non quotato $nche aggiunge un altro requisito che $IFSnon deve contenere cifre. Quello che puoi e dovresti citare.
Stéphane Chazelas,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.