Curinga de basquete para corresponder exatamente a n caracteres

8

Existe um curinga no bash para corresponder exatamente a 5 caracteres, encurtando um padrão como ?????

Theo
fonte

Respostas:

9

Ainda não.

Com a extglobopção, bashadiciona alguns kshoperadores de globbing estendidos, mas não {x,y}(pattern)esse.

Em ksh93, você usa:

{5}(?)

Com zshcom a extendedglobopção:

?(#c5)

(você notará que nenhum deles é mais curto do que o ?????normal).

Em bash, você pode fazer:

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

embora isso dificilmente melhore e confie em $IFSnão conter ?.

Stéphane Chazelas
fonte
Algum destes permite usar uma variável para 5?
usar o seguinte código
@ Random832, sim, exceto o terceiro com bash(esse também funcionaria com ksh93 ou zsh na emulação sh / ksh). Com bash, você poderia usar em seu $(seq "$n" | tr -cd '\n' | tr '\n' '?')lugar.
Stéphane Chazelas
Ou $(yes '?' | tr -cd '?' | head -c $n)- isso é divertido. Além disso, você não pode remover a dependência do $ IFS colocando-a entre "aspas"?
usar o seguinte código
@ Random832, não. Desta vez (e provavelmente essa é a única vez que você desejará fazer isso), deseje usar o split+globoperador (deixando uma expansão sem aspas), mas apenas a globparte (você deseja que o ?????padrão seja expandido, o que não aconteceria se você citou $(...)). Observe que você usa esse split+globoperador com suas aspas, o $nque adiciona outro requisito que $IFSnão deve conter dígitos. Aquele que você pode e deve citar.
Stéphane Chazelas