Recentemente, me deparei com uma situação inusitada e precisei fazer um shell script para resolver.
Um fornecedor envia uns arquivos para serem processados em ordem de criação, mas não adianta ordenar por data/hora de criação porque é comum criar arquivos retroativos, ou seja, tem que ordenar pelo nome (que contém data e hora no formato DDMMYY).
Por causa do formato de data usado na formação do nome do arquivo, a ordem de processamento por nome também pode falhar.
Formato do nome do arquivo: arq_DDMMYYHHMISS
O script (abaixo), pega a saída do comando "ls", trata parte do nome dos arquivos e ordena por essa parte (no caso, inverte o formato da data contido no nome de cada arquivo).
No final, retorna a lista com o nome completo do arquivo conforme nova ordenação.
Script
_______________________________________________________________
#!/bin/ksh
ls -l >/dev/null 2>/dev/null
if [ $? = 0 ]
then
directory=/home0/users/josbar
if [ -e $directory/temp.txt ]
then
rm $directory/temp.txt
fi
for FILE_RCV in $directory/arqpro*
do
if [ -s $FILE_RCV ]
then
file_name=`basename $FILE_RCV`
seg=$(echo $file_name | cut -c18-19)
min=$(echo $file_name | cut -c16-17)
hor=$(echo $file_name | cut -c14-15)
day=$(echo $file_name | cut -c8-9)
month=$(echo $file_name | cut -c10-11)
year=$(echo $file_name |cut -c12-13)
order_by=$year$month$day$hor$min$seg
echo $order_by - $FILE_RCV >> $directory/temp.txt
fi
done
cat $directory/temp.txt | sort -n | cut -c16-55
fi
_____________________________________________________________
Mostrando postagens com marcador Unix. Mostrar todas as postagens
Mostrando postagens com marcador Unix. Mostrar todas as postagens
quarta-feira, 26 de setembro de 2012
sábado, 28 de agosto de 2010
Shell Script para ler lista e buscar dependências em arquivos
Recentemente precisei fazer uma análise de dependências entre programas escritos em Pro*C e rotinas armazenadas em banco de dados.
Para realizar essa tarefa, gerei um arquivo com a lista de rotinas armazenadas no banco de dados (funções, procedures e packages), chamada "listaProc.txt" e um shell script que executa um loop nessa lista.
Nesse loop, para cada rotina listada, o script executa uma busca por ela nos arquivos da pasta atual e, gera o resultado da busca em um arquivo de resultados (arquivo "resultado.txt"), relacionando o nome da rotina com os arquivos onde ela é invocada.
A busca é realizada utilizando o comando grep -i.
Abaixo segue o código do Shell Script:
Para realizar essa tarefa, gerei um arquivo com a lista de rotinas armazenadas no banco de dados (funções, procedures e packages), chamada "listaProc.txt" e um shell script que executa um loop nessa lista.
Nesse loop, para cada rotina listada, o script executa uma busca por ela nos arquivos da pasta atual e, gera o resultado da busca em um arquivo de resultados (arquivo "resultado.txt"), relacionando o nome da rotina com os arquivos onde ela é invocada.
A busca é realizada utilizando o comando grep -i.
Abaixo segue o código do Shell Script:
#!/bin/bash
for i in $(cat /home0/users/josbar/listaProc.txt)do
grep -i "$i" *.pc >> resultado.txt
done
Depois de executado o script, basta carregar o arquivo "resultado.txt" em uma planilha como se fosse um arquivo "csv", delimitado pelo caracter ":" e fazer a análise.
No meu caso, o script foi útil para fazer a análise de dependência em programas Pro*C, mas pode ser utilizado para outros tipos de arquivos.
Referências:
No meu caso, o script foi útil para fazer a análise de dependência em programas Pro*C, mas pode ser utilizado para outros tipos de arquivos.
Referências:
Marcadores:
Linux,
Shell Script,
Solaris,
Unix
Assinar:
Postagens (Atom)