Blog do Waldirio

Grep com mais de uma clausula

Amigos, bom dia

Uma funcionalidade bem interessante e útil é a utilização de expressões regulares, com isso, irei mostrar um exemplo rápido de como buscar mais de uma palavra em um arquivo texto.

Como pode ser visto, o conteudo do arquivo text é maca, pera e uva

jeju:[xxx] > cat text
maca
pera
uva

Para se buscar mais de  uma palavra ao mesmo tempo, segue o exemplo (pera e maca), basta habilitar o modo de expressão regular (-E, –extended-regexp) e preparar a query.

jeju:[xxx] > grep -E ‘(pera|maca)’ text
maca
pera

Espero que tenham gostado.

Abraços
Waldirio

Tags: , ,
June 14, 2010 - 11:08 AM No Comments

Command to build one or more network segments – with while

Pessoal

Segue um comando para criar um segmento completo e/ou parcial, apenas se passando a classe (neste exemplo, classe C)

seg() { echo -e “$1″ | while read LINE; do for b in $(seq 10); do echo $LINE.$b; done; done; }

Como usar:

jeju:[xxxx] > seg "200.167.208\n10.0.0"
200.167.208.1
200.167.208.2
200.167.208.3
200.167.208.4
200.167.208.5
200.167.208.6
200.167.208.7
200.167.208.8
200.167.208.9
200.167.208.10
10.0.0.1
10.0.0.2
10.0.0.3
10.0.0.4
10.0.0.5
10.0.0.6
10.0.0.7
10.0.0.8
10.0.0.9

[]'s
Waldirio
10.0.0.10
Tags: , ,
October 21, 2009 - 3:34 PM No Comments

Command to build one or more network segments – with for

Pessoal

Segue um comando para criar um segmento completo e/ou parcial, apenas se passando a classe (neste exemplo, classe C)

seg() { for b in $(echo $1); do for x in $(seq 10); do echo $b.$x; done; done }

Como usar:

jeju:[xxxx] > seg "200.167.208 10.0.0"
200.167.208.1
200.167.208.2
200.167.208.3
200.167.208.4
200.167.208.5
200.167.208.6
200.167.208.7
200.167.208.8
200.167.208.9
200.167.208.10
10.0.0.1
10.0.0.2
10.0.0.3
10.0.0.4
10.0.0.5
10.0.0.6
10.0.0.7
10.0.0.8
10.0.0.9
10.0.0.10

[]’s
Waldirio

Tags: , , ,
October 21, 2009 - 3:30 PM No Comments

Obtendo o path independente do caminho ….

Ola amigos, bom dia

Hoje vou publicar uma rotina simples, mas bem funcional e útil, pois muitos usuários que utilizam shell script geralmente tem esse problema .., vamos ao assunto.

Suponha que voce tenha um arquivo sample.tar e gostaria de criar um install.sh para realizar algumas configurações e também extrair o arquivo sample.tar. Geralmente é necessário ir ao diretório de instalação (onde estão os arquivos .sh e .tar) para executar o mesmo, porém vamos incluir uma flag em nosso script que indepentente de onde voce esteja, a rotina irá detectar o path absoluto e você não terá mais problema na instalação e/ou extração.

Vamos ao script

### install.sh ###

#!/bin/bash
PATH_INSTALL=`echo $0|sed -s ’s/\/install.sh//g’`

tar xf $PATH_INSTALL/scilab_4.1.2.tar -C / 2>/dev/null

if [ $? -eq 0 ]; then
echo “Scilab 4.1.2 installed with sucessful !!!”
else
echo “There is a problem, check the installation ….”

fi
############

Note a variável PATH_INSTALL, ela contem o pulo do gato, ou seja, independente de onde voce esteja e execute o script, ele filtra o caminho removendo a parte de texto /install.sh, neste momento, você só fica com o path absoluto. O resto é só usar a criatividade.

[]’s amigos
Waldirio

Tags: , ,
August 11, 2009 - 11:49 AM No Comments

Backup de MySQL

Bom dia amigos

Para se realizar um backup de banco (MySQL), pode ser utilizado o script abaixo

#!/bin/bash
DB=`mysql -e “show databases”;`
DB_FIL=`echo $DB|sed -e “s/Database//g”`
for b in $DB_FIL
do

mkdir $b

TABLE=`mysql -e “connect $b; show tables”;`
TABLE_FIL=`echo $TABLE|sed -e “s/Tables_in_//g”|sed -e “s/$b//g”`

for x in $TABLE_FIL
do
echo “Db – $b e Table – $x”
mysqldump $b $x > $b/${x}_`date +%d.%m.%y`.sql
done
done

Onde ao termino, é gerado um diretorio com o nome do banco e dentro os arquivos com o nome das tabelas com a data referida do backup.

Qualquer dúvida entre em contato

[]’s
Waldirio

Tags: , ,
January 9, 2009 - 1:29 PM No Comments

Matar vários processos

Bom dia Amigos

Para se matar processos em Unix/Linux, normalmente é utilizado o comando kill -9 <id>, porem, se forem muitos processos, fica algo inviavel.

Uma boa forma seria fazer uma rotina onde voce tenha todos os id e possa fazer um for, como segue o exemplo abaixo:

Imagine querer matar TODOS os processos do usuario wmp, logo faremos dois comandos

1º – A obtenção da lista de processos
a=`ps -ef |grep wmp|awk ‘{print $2}’

2º – A execução do kill -9 para cada processo da lista obtida anteriormente
for b in $a
do
kill -9 $b
done

É isso amigos, simples e funcional.

[]’s
Waldirio

Tags: , , ,
January 8, 2009 - 9:52 AM No Comments