Eu tento entender qual -c
opção faz no tr
comando de acordo com man tr
o comando que diz:
-c, -C, --complement usa o complemento de SET1
Mas não consigo entender o que o doc quer dizer com "complemento" , então fiz o seguinte exemplo para entender:
Criei o seguinte arquivo chamado trance.txt
:
ILOVE YOU
I HATE YOU
i WANNA EAT APPLE PIE
E eu corro:tr -C A-Za-z "\n" < trance.txt
Isso dá a saída:
ILOVE
YOU
I
HATE
YOU
i
WANNA
EAT
APPLE
PIE
Mas ainda não entendi o que realmente -c
a opção faz. Você pode me explicar por favor?
Ele substitui o conjunto
A-Za-z
por seu complemento, ou seja , todos os caracteres do conjunto de caracteres atual, menos os especificados. Citando POSIX , na ausência de-d
:Portanto, seu comando está substituindo todos os caracteres que não são AZ ou az por novas linhas.
Como
tr
usa um mapa de caracteres um para um para suas substituições , não é tão simples assim; as-c
e-C
não são apenas as opções “not in”, elas constroem o conjunto de todos os caracteres que não estão no conjunto fornecido, na ordem especificada pela opção. Isso só é relevante se o conjunto de destino tiver mais de um caractere.