quarta-feira, 31 de julho de 2013

Como listar somente uma coluna específica de um arquivo texto

Entre as várias ferramentas que existem para tratar arquivos texto, uma das mais usadas é o Cut. Ele serve para especificar quais colunas de um arquivo texto você quer mostrar. Por exemplo, o arquivo /etc/passwd contém todos os usuários do sistema.

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
www-data:x:33:33:www-data:/var/www:/bin/sh
ricardo:x:1000:1000:Ricardo Lino Olonca,,,:/home/ricardo:/bin/bashsshd:x:104:65534::/var/run/sshd:/usr/sbin/nologin
mysql:x:109:118:MySQL Server,,,:/var/lib/mysql:/bin/false

Repare que o delimitador de colunas, nesse arquivo, é o caracter ":". Para listar somente o nome dos usuários (primeira coluna) podemos usar:

$ cut -d":" -f1 /etc/passwd
root
daemon
bin
games
man
lp
mail
www-data
ricardo
sshd
mysql
$

Se quisermos o nome (primeira coluna) e seu diretório home (sexta coluna), digitamos:

$ cut -d":" -f1,6 /etc/passwd
root:/root
daemon:/usr/sbin
bin:/bin
games:/usr/games
man:/var/cache/man
lp:/var/spool/lpd
mail:/var/mail
www-data:/var/www
ricardo:/home/ricardo
sshd:/var/run/sshd
mysql:/var/lib/mysql
$

Se quisermos mostrar da primeira até a quarta coluna, use:

$ cut -d":" -f1-4 /etc/passwd
root:x:0:0
daemon:x:1:1
bin:x:2:2
games:x:5:60
man:x:6:12
lp:x:7:7
mail:x:8:8
www-data:x:33:33
ricardo:x:1000:1000
sshd:x:104:65534
mysql:x:109:118
$

Você pode usar o Cut com outros programas. Por exemplo, se você quiser verificar o que está passando pelo arquivo /var/log/syslog, mas só quer ver as mensagens de erro, digite:

# tail -f /var/log/syslog | cut -d":" -f4
 device not found for removing
 device not found for removing
 device not found for removing
 device not found for removing
 4 new devices added
 4 devices removed (good-bye!)
 device not found for removing
 device not found for removing
 device not found for removing