Os arquivos texto gerados no Windows/DOS normalmente terminam por '\r\n', o que pode ser um problema. Para tratar esta situação pode-se usar uma expressão regular:
$registro =~ s/\r//g;
Exemplo:
while ($registro = <STDIN>) {
$registro =~ s/\r//g;
chomp($registro);
}
PS. Valeu Dárcio!
sexta-feira, 4 de setembro de 2015
segunda-feira, 31 de agosto de 2015
Sort - Arquivo Posicional
Para classificar um arquivo posicional fixo, quando a(s) chave(s) não está(ão) no começo do arquivo, deve-se usar o parâmetro -k, como a seguir:
-k1.[pos_inicial],1.[pos_final]
Exemplo:
sort -k1.58,1.77 -k1.13,1.26 -k1.175,1.176 -k1.79,1.98
No exemplo acima, o arquivo é classificado pelas posições 58 a 77, em seguida pelas posições 13 a 26, depois pelas posições 175 a 176 e por fim pelas posições 79 a 98.
-k1.[pos_inicial],1.[pos_final]
Exemplo:
sort -k1.58,1.77 -k1.13,1.26 -k1.175,1.176 -k1.79,1.98
No exemplo acima, o arquivo é classificado pelas posições 58 a 77, em seguida pelas posições 13 a 26, depois pelas posições 175 a 176 e por fim pelas posições 79 a 98.
sexta-feira, 7 de agosto de 2015
Open DNS - Family Shield
Para os pais que se preocupam em garantir uma navegação na Internet mais segura para os seus familiares, vai uma dica para utilizar o Open DNS - Family Shield (OpenDNS - Family Shield), que automaticamente bloqueia sites maliciosos e com conteúdo pornográfico.
Endereços de DNS
Servidor DNS preferencial: 208.67.222.123
Servidor DNS alternativo: 208.67.220.123
Como efetuar as alterações (fonte http://www.tecmundo.com.br/seguranca/4495-aprenda-a-bloquear-sites-pornograficos-e-perigosos-no-computador.htm):
Windows XP
Acesse o Menu Iniciar, em seguida clique sobre o ícone do “Painel de Controle” e então selecione as “Conexões de Rede”. Clique com o botão direito do mouse sobre a conexão ativa e então sobre a opção “Propriedades”.
Selecione “Protocolo de Internet (TCP/IP)” e clique novamente em “Propriedades”.Na janela que será aberta, selecione a opção “Usar os seguintes endereços de servidor DNS” e insira os endereços:
Servidor DNS preferencial: 208.67.222.123
Servidor DNS alternativo: 208.67.220.123
Windows 7 / Vista / 8 / 8.1 / 10
Para os novos sistemas operacionais mais novos da Microsoft, as configurações a serem feitas são as mesmas. Acesse o “Painel de Controle” no Menu Iniciar e então clique sobre “Exibir status e tarefas de rede”. Ao lado de “Conexão local”, clique em “Exibir status” e então em “Propriedades”.
Selecione “Protocolo TCP/IP versão 4” e clique novamente sobre “Propriedades”. Na janela que será aberta, selecione a opção “Usar os seguintes endereços de servidor DNS” e insira os endereços:
Servidor DNS preferencial: 208.67.222.123
Servidor DNS alternativo: 208.67.220.123
Linux (Distro: Ubuntu)
Na Área de trabalho do sistema operacional, clique com o botão direito sobre o ícone de rede e então sobre a opção “Editar conexões”. Selecione a conexão utilizada e clique novamente sobre o botão “Editar”. Escolha a aba “Configurações IPv4”. Na caixa de texto referente aos servidores DNS, insira os endereços: 208.67.222.123, 208.67.220.123. Clique em “OK” e reinicie o sistema.
Mac OS (Versões Leopard)
Clique sobre a maçã da Área de trabalho e selecione a opção “Preferências de sistema”. Escolha o ícone referente à Rede e escolha a primeira conexão apresentada na janela de conexões. Vá para a janela de configurações avançadas e insira os endereços: 208.67.222.123 e 208.67.220.123. Clique em “OK” para finalizar.
Endereços de DNS
Servidor DNS preferencial: 208.67.222.123
Servidor DNS alternativo: 208.67.220.123
Como efetuar as alterações (fonte http://www.tecmundo.com.br/seguranca/4495-aprenda-a-bloquear-sites-pornograficos-e-perigosos-no-computador.htm):
Windows XP
Acesse o Menu Iniciar, em seguida clique sobre o ícone do “Painel de Controle” e então selecione as “Conexões de Rede”. Clique com o botão direito do mouse sobre a conexão ativa e então sobre a opção “Propriedades”.
Selecione “Protocolo de Internet (TCP/IP)” e clique novamente em “Propriedades”.Na janela que será aberta, selecione a opção “Usar os seguintes endereços de servidor DNS” e insira os endereços:
Servidor DNS preferencial: 208.67.222.123
Servidor DNS alternativo: 208.67.220.123
Windows 7 / Vista / 8 / 8.1 / 10
Para os novos sistemas operacionais mais novos da Microsoft, as configurações a serem feitas são as mesmas. Acesse o “Painel de Controle” no Menu Iniciar e então clique sobre “Exibir status e tarefas de rede”. Ao lado de “Conexão local”, clique em “Exibir status” e então em “Propriedades”.
Selecione “Protocolo TCP/IP versão 4” e clique novamente sobre “Propriedades”. Na janela que será aberta, selecione a opção “Usar os seguintes endereços de servidor DNS” e insira os endereços:
Servidor DNS preferencial: 208.67.222.123
Servidor DNS alternativo: 208.67.220.123
Linux (Distro: Ubuntu)
Na Área de trabalho do sistema operacional, clique com o botão direito sobre o ícone de rede e então sobre a opção “Editar conexões”. Selecione a conexão utilizada e clique novamente sobre o botão “Editar”. Escolha a aba “Configurações IPv4”. Na caixa de texto referente aos servidores DNS, insira os endereços: 208.67.222.123, 208.67.220.123. Clique em “OK” e reinicie o sistema.
Mac OS (Versões Leopard)
Clique sobre a maçã da Área de trabalho e selecione a opção “Preferências de sistema”. Escolha o ícone referente à Rede e escolha a primeira conexão apresentada na janela de conexões. Vá para a janela de configurações avançadas e insira os endereços: 208.67.222.123 e 208.67.220.123. Clique em “OK” para finalizar.
quarta-feira, 5 de agosto de 2015
MySQL - Função para Contar ocorrências de um caracter/string em uma string
Para contar a quantidade de ocorrências de um caracter ou string em uma string pode-se usar esta função:
round((length(<string>) - length(replace(<string>,<caracter/string pesquisada>,''))) / length(<caracter/string pesquisada>))
Exemplo:
round((length(dna_ppg) - length(replace(dna_ppg,'#',''))) / length('#'))
Procura no campo 'dna_ppg' a quantidade de ocorrências do caracter '#'
Fonte (http://gilbertoalbino.com/como-contar-numero-de-ocorrencias-de-string-num-campo-do-mysql/)
round((length(<string>) - length(replace(<string>,<caracter/string pesquisada>,''))) / length(<caracter/string pesquisada>))
Exemplo:
round((length(dna_ppg) - length(replace(dna_ppg,'#',''))) / length('#'))
Procura no campo 'dna_ppg' a quantidade de ocorrências do caracter '#'
Fonte (http://gilbertoalbino.com/como-contar-numero-de-ocorrencias-de-string-num-campo-do-mysql/)
quarta-feira, 22 de julho de 2015
Right / Left Stings no AWK
Como no AWK não existem as impelemntações de Substring Right e Left, aqui vão duas funções que podem ser usadas:
function right(s,i) { return substr(s, 1+length(s)-i) }
function left(s,i) { return substr(s, 1, i) }
function right(s,i) { return substr(s, 1+length(s)-i) }
function left(s,i) { return substr(s, 1, i) }
quinta-feira, 19 de março de 2015
CentOS - Windows Terminal Server Client
Para conectar em servidor Windows a partir de uma distribuição CentOS pode-se usar os pacotes:
rdesktop - X client for remote desktop into Windows Terminal Server
tsclient - Client for VNC and Windows Terminal Server
rdesktop - X client for remote desktop into Windows Terminal Server
tsclient - Client for VNC and Windows Terminal Server
quarta-feira, 4 de março de 2015
Instalação do MySQL - CentOS
Para instalar o MySQL no CentOS e NÃO utilizar os diretórios padrão de dados, deve-se desabilitar o SELinux, como pode ser visto neste artigo - SELinux and MySQL .
Para desabilitar o SELinux de maneira temporária:
setenforce 0
getenforce
Vide mais em : Desabilitar SELinux neste blog !
Para desabilitar o SELinux de maneira temporária:
setenforce 0
getenforce
Vide mais em : Desabilitar SELinux neste blog !
terça-feira, 3 de março de 2015
For + Awk - Parte 2
Problema: Dado um diretório, contendo diversos subdiretórios, que por sua vez contém diversos arquivos compactados e você precisa descompactar os arquivos de alguns destes diretórios.
Alternativa de solução: Vasculhar todos os diretórios, selecionando apenas os subdiretórios que interessam através, por exemplo de um awk.
Exemplo:
for k in $(for i in $(find /dados/ -type d);do for j in $(ls $i/*.gz); do echo $j | awk 'BEGIN{FS="/"}{if ($7 >= "20150106" && $7 <= "20150115"){print $0;}}' ;done; done); do gzip -dc $k; done | gzip > /dados/arquivo_20150106_20150115.txt.gz
Neste exemplo, eu vasculho todos os subdiretórios cujo nome esteja entre 20150106 e 20150115, descompacto estes arquivos e os compacto em uma nova saída.
sexta-feira, 13 de fevereiro de 2015
MySQL - Loader de Arquivo com Tamanho Fixo (posicional)
Para efetuar o loader de um arquivo fixo (ou posicional), ou seja, um arquivo que não possui delimitadores, existem duas maneiras:
Método 1 - Usar uma tabela de destino com TODOS os campos do arquivo, com tamanho fixo.
Para este método, a tabela de destino deverá possuir, OBRIGATORIAMENTE, a estrutura igual ao do arquivo de origem. No momento do LOADER, utilizar os parâmetros FIELD TERMINATED BY e ENCLOSED BY sem conteúdo ('').
Exemplo:
Arquivo
00101022014FULANO DE TAL M
00201032014FULANA DO TAL F
-- Tabela
CREATE TABLE tabela(
codigo char(3) default null,
data char(3) default null,
nome char(15) default null,
sexo char(1) default null
) engine=MyIsam DEFAULT CHARSET=latin1;
-- Loader
LOAD DATA LOCAL INFILE '/Arquivo'
INTO TABLE tabela
FIELDS TERMINATED BY ''
ENCLOSED BY ''
LINES TERMINATED BY '\n';
-- Verificando se houve erro
show warnings;
Método 2 - Efetuar o LOADER em uma váriável auxiliar (@linha) e depois fazer o set para cada uma das linhas, usando a função SUBSTRING.
Exemplo:
Arquivo
00101022014FULANO DE TAL M
00201032014FULANA DO TAL F
-- Tabela
CREATE TABLE tabela(
codigo int default null,
nome varchar(15) default null,
data date default null,
sexo char(1) default null
) engine=MyIsam DEFAULT CHARSET=latin1;
-- Loader
LOAD DATA LOCAL INFILE '/Arquivo'
INTO TABLE tabela
FIELDS TERMINATED BY ''
ENCLOSED BY ''
LINES TERMINATED BY '\n'
(@linha)
SET codigo = substr(@linha, 1, 3),
nome = trim(upper(substr(@linha, 12, 15))),
date = str_to_date(substr(@linha, 4, 8), '%Y%m%d'),
sexo = substr(@linha, 27, 1)
;
-- Verificando se houve erro
show warnings;
Método 1 - Usar uma tabela de destino com TODOS os campos do arquivo, com tamanho fixo.
Para este método, a tabela de destino deverá possuir, OBRIGATORIAMENTE, a estrutura igual ao do arquivo de origem. No momento do LOADER, utilizar os parâmetros FIELD TERMINATED BY e ENCLOSED BY sem conteúdo ('').
Exemplo:
Arquivo
00101022014FULANO DE TAL M
00201032014FULANA DO TAL F
-- Tabela
CREATE TABLE tabela(
codigo char(3) default null,
data char(3) default null,
nome char(15) default null,
sexo char(1) default null
) engine=MyIsam DEFAULT CHARSET=latin1;
-- Loader
LOAD DATA LOCAL INFILE '/Arquivo'
INTO TABLE tabela
FIELDS TERMINATED BY ''
ENCLOSED BY ''
LINES TERMINATED BY '\n';
-- Verificando se houve erro
show warnings;
Método 2 - Efetuar o LOADER em uma váriável auxiliar (@linha) e depois fazer o set para cada uma das linhas, usando a função SUBSTRING.
Exemplo:
Arquivo
00101022014FULANO DE TAL M
00201032014FULANA DO TAL F
-- Tabela
CREATE TABLE tabela(
codigo int default null,
nome varchar(15) default null,
data date default null,
sexo char(1) default null
) engine=MyIsam DEFAULT CHARSET=latin1;
-- Loader
LOAD DATA LOCAL INFILE '/Arquivo'
INTO TABLE tabela
FIELDS TERMINATED BY ''
ENCLOSED BY ''
LINES TERMINATED BY '\n'
(@linha)
SET codigo = substr(@linha, 1, 3),
nome = trim(upper(substr(@linha, 12, 15))),
date = str_to_date(substr(@linha, 4, 8), '%Y%m%d'),
sexo = substr(@linha, 27, 1)
;
-- Verificando se houve erro
show warnings;
quarta-feira, 28 de janeiro de 2015
SELinux - Desabilitar
SELinux (http://pt.wikipedia.org/wiki/SELinux)
Para desabilitar de maneira definitiva:
Alterar no arquivo /etc/selinux/config, a linha:
SELINUX=enforcing
para
SELINUX=disabled
Desabilitar apenas na sessão atual (após o próximo boo voltará a ficar ativo):
setenforce 0
Verificar o status do SELinux:
selinuxenabled; echo $?
onde 0 - habilitado
Para desabilitar de maneira definitiva:
Alterar no arquivo /etc/selinux/config, a linha:
SELINUX=enforcing
para
SELINUX=disabled
Desabilitar apenas na sessão atual (após o próximo boo voltará a ficar ativo):
setenforce 0
Verificar o status do SELinux:
selinuxenabled; echo $?
onde 0 - habilitado
terça-feira, 27 de janeiro de 2015
MacOS X - Habilitar gravação NTFS
Para permitir que no sistema operacional Mac OS X a gravação em drives/discos NTFS é necessário alterar a montagem automática dele (fstab).
Passo-a-passo (em um terminal):
- Comando sudo nano /etc/fstab (pode-se também usar o vi como editor). Caso o arquivo não exista, o mesmo será criado;
- Incluir a seguinte linha: LABEL=<NAME> none ntfs rw,auto,nobrowse onde <NAME> é o nome do drive (observar que o mesmo é case sensitive)
- Salvar o arquivo (Control-O / Control-X no nano ou :wq! no vi)
- Desmontar a unidade e montá-la novamente
- Abrir a unidade através do seguinte comando: open /Volumes
Done !
(referência: http://www.cnet.com/news/how-to-manually-enable-ntfs-read-and-write-in-os-x/)
Passo-a-passo (em um terminal):
- Comando sudo nano /etc/fstab (pode-se também usar o vi como editor). Caso o arquivo não exista, o mesmo será criado;
- Incluir a seguinte linha: LABEL=<NAME> none ntfs rw,auto,nobrowse onde <NAME> é o nome do drive (observar que o mesmo é case sensitive)
- Salvar o arquivo (Control-O / Control-X no nano ou :wq! no vi)
- Desmontar a unidade e montá-la novamente
- Abrir a unidade através do seguinte comando: open /Volumes
Done !
(referência: http://www.cnet.com/news/how-to-manually-enable-ntfs-read-and-write-in-os-x/)
GNOME 3
As configurações de ambiente e dos aplicativos do GNOME 3 podem ser acessadas e configuradas através do dconf-editor - disponível a partir do yum.
Por exemplo, as configurações do GEdit estarão disponíveis em:
org / gnome / gedit / preferences
Por exemplo, as configurações do GEdit estarão disponíveis em:
org / gnome / gedit / preferences
sexta-feira, 23 de janeiro de 2015
Montando uma Unidade de rede Windows no Linux
Para mapear uma unidade/pasta de um servidor Windows - na rede - em uma máquina Linux:
mount -t cifs -o username=<usuario>,password=<senha> //<IP>/<unidade>$/<pasta> /<pasta_destino>
Onde:
<usuario> - usuário de acesso ao servidor
<senha> - senha do usuário
<IP> - endereço do servidor
<unidade> - unidade a ser mapeada
<pasta> - pasta/diretório a ser mapeado (opcional)
<pasta_destino> - pasta aonde será montado
mount -t cifs -o username=<usuario>,password=<senha> //<IP>/<unidade>$/<pasta> /<pasta_destino>
Onde:
<usuario> - usuário de acesso ao servidor
<senha> - senha do usuário
<IP> - endereço do servidor
<unidade> - unidade a ser mapeada
<pasta> - pasta/diretório a ser mapeado (opcional)
<pasta_destino> - pasta aonde será montado
quarta-feira, 21 de janeiro de 2015
Assinar:
Comentários (Atom)