shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Parâmetro -d com TAB do comando cut


From: Tiago Peczenyj
Subject: Re: [shell-script] Parâmetro -d com TAB do comando cut
Date: Wed, 22 Feb 2017 20:10:09 +0000

Ola

Este erro é bem comum: supor uma dada configuração e na pratica não ser bem assim.

No caso alem do espaço em branco e tab existem outros carácteres "invisíveis" (ex carácteres de escape) que vão atrapalhar uma analise mais simples. Ou quando stderr e stdin são capturados ao mesmo tempo e vc pode ter algo inesperado no meio de uma linha (num arquivo grande pode passar desapercebido)

Outro exemplo é quando o próprio nome de arquivo tem um espaço. Ou carácteres acentuados em algum encoding tinhoso.

awk é mais esperto com relação a ler dados "tabulados". Seja paranoico e verifique tudo: se o arquivo existe, se a linha está no formato que vc espera, etc.

Às vezes não conseguimos analisar 100% do arquivo. Vale imprimir dizendo "não entendi essa linha: ..."

O script ficará complexo. Mas se o que vc está fazendo pode trazer prejuízos se mal feito então vale a pena (não faça como eu q apaguei diretorios errados recursivamente ate o / )

Hoje sou pragmático ao shell: prefiro usar a linha de comando ou pequenos (10-20 linhas) scripts. Mais que isso eu sei que terei problemas no longo prazo, de alguma forma (portabilidade, etc)

Boa sorte



Em qua, 22 de fev de 2017 às 20:35, Alfredo Casanova address@hidden [shell-script] <address@hidden> escreveu:

faça um 

$ cat -vet teste.out

assim vc poderá ver se o arquivo está, de fato, separado por TABS. Eu acredito que, por ser uma saída de ls, não está.
Na saída do cat -vet o tab é representado por ^I


On Thu, Feb 16, 2017 at 7:26 PM Wagner Brasileiro address@hidden [shell-script] <address@hidden> wrote:

Boa tarde pessoal, sei que parece meio patética minha dúvida e estou meio enferrujado em Bash, mas já revisei o histórico do grupo e pesquisei na internet e todos são categóricos em afirmar que se quer fazer cut baseado nos delimitadores TABs é só ocultar a opção "-d" pois o TAB é o delimitador natural do Bash, porém não funciona como eu esperava...  Já tentei direto com a saída do comando ou enviando a saíta para um arquivo e depois a enviando ao cut e ele simplesmente é indiferente, não visualizo onde estou errando:

root@debian-backup-teste:/home/wagner# cat teste.out| cut -f6
total 128
drwxr-xr-x 20 wagner wagner  4096 Fev 16 13:01 .
drwxr-xr-x  3 root   root    4096 Fev 14 12:47 ..
drwxr-xr-x  2 wagner wagner  4096 Fev 14 12:51 Área de trabalho
-rw-------  1 wagner wagner    40 Fev 15 12:44 .bash_history
-rw-r--r--  1 wagner wagner   220 Fev 14 12:47 .bash_logout
-rw-r--r--  1 wagner wagner  3515 Fev 14 12:47 .bashrc
drwx------  8 wagner wagner  4096 Fev 14 15:29 .cache
drwx------ 12 wagner wagner  4096 Fev 15 12:39 .config
drwx------  3 wagner wagner  4096 Fev 14 12:51 .dbus


Minha idéia é pegar o 6⁰ campo, para isso usei o cut -f6 e nada... Ele mostra exatamente como era o arquivo.
Sei que deve ser possível resolver com print ou awk, mas agora queria entender esse erro...

Att,

Wagner Brasileiro

--
Tiago B. Peczenyj

http://about.me/peczenyj

reply via email to

[Prev in Thread] Current Thread [Next in Thread]