[<set>]
corresponde a um caractere (estendido para elemento de agrupamento com algumas ferramentas e em algumas circunstâncias) do <set>
fornecido.
[.____]
corresponde especificamente a um caracteres, desde que seja .
ou _
ou _
ou _
ou _
. Escusado será dizer que [.____]
é o mesmo que [._]
.
Se você quiser corresponder a uma das duas strings, precisará do operador de alternância |
:
awk -F '\.|____' '{print $4}'
Com o moderno (e padrão) awk
s, você também pode escrevê-lo:
awk -F '\.|_{4}' '{print $4}'
Observe também que [...]
precisa de cotações para o shell, pois [...]
também é um operador de globalização de casca. No seu caso, você citou apenas a parte ____
do shell. Isso não foi necessário, pois _
não é especial para o shell. Isso significa que, com -F[."____"]
, se houvesse um arquivo chamado -F.
ou -F_
no diretório atual, o shell globbing expandiria -F[."____"]
para esses antes de passar para awk
. Se não, -F[.____]
seria passado para awk
(apesar de alguns shells relatarem um erro em vez daquele glob sem correspondência).