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 ?????

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 ?.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.