extract.sh: Script baseado no extract da phrack
Publicado por Marcos Paulo Ferreira (última atualização em 09/10/2010)
[ Hits: 5.583 ]
Homepage: http://daemoniolabs.wordpress.com
Download 1286311278.extract.sh (versão 2)
Para quem lia ou lê a phrack magazine já deve ter usado o programa extract lançado na revista
na edição #50 [1]. Esse programa é de grande utilidade, pois com ele podemos extrair conteúdos específicos
de um arquivo texto e salvá-los em um arquivo qualquer.
O conteúdo mencionado deve estar entre as tags <++> e <-->. O nome do arquivo de saída deve estar
após a tag <++> (obs: Pode-se utilizar diretórios também. Se eles não existirem, então serão criados.)
Confira um exemplo:
$ cat arquivo.txt
aaaaa
bbbbb
<++> saida.txt
1111
2222
3333
<-->
cccc
dddd
Utilizando o script:
$ ./extract.sh arquivo.txt
- Extracting saida.txt
Depois disso, o arquivo saida.txt será criado e seu conteúdo será:
$ cat saida.txt
111
222
333
[1] http://www.phrack.com/issues.html?issue=50&id=16
Espero que gostem.
t+
Versão 2 - Enviado por Marcos Paulo Ferreira em 03/10/2010
Changelog: É... parece que a regex para casar com as tags de abertura e fechamento não estava funcionando.
Não sei por quê, mas aqui em casa o script rodou sem problemas.
Bem, troquei a tag '<[+][+]>' para \<[+][+]\>, pois as versões recentes do bash não precisam das aspas para delimitar a regexp (e se você usar as aspas, o resultado será diferente :S ).
Outra coisa que mudei foi a robustez do script. Agora ele verifica alguns errinhos básicos que o script anterior não verificava.
Opa... fuçando pela net encontrei o Meleu Extracting Utility que faz a mesma coisa que esse script aqui.
Para falar a verdade, eu nem peguei o código do meleu para ler a fundo, mas posso garantir que o script tá bem diferente do meu e com muito mais esquemas interessantes :|
Página pessoal do meleu:
http://www.meleuzord.hpg.ig.com.br
Bem, acho que é isso!
t+
Download 1286311278.extract.sh
#!/bin/bash # # Autor: Marcos Paulo Ferreira (Daemonio) # Contato: undefinido at gmail com # # =[ Script : extract.sh ]= # Dom Ago 22 13:43:09 BRT 2010 Inicio # Seg Ago 23 00:34:38 BRT 2010 Fim da primeira versao # Seg Ago 23 14:21:32 BRT 2010 Inclusao do read -r no while # # =[ Descricao ]= # Extrai o conteudo delimitado entre as tags <++> e <--> # de um arquivo texto. O nome do arquivo a ser salvo # deve vir depois da tag <++>. # Esse script foi baseado no extract.c da phrack #50. # # =[ Uso ]= # $ ./extract.sh arquivo.txt # # =[ Exemplo ]= # $ cat arquivo.txt # <++> saida.txt # 111 # 222 # 333 # <--> # $ ./extract.sh arquivo.txt # - Extracting saida.txt # $ cat saida.txt # 111 # 222 # 333 # extract() { while read -r LINE do # Procura pelo padrao <++> no inicio da linha if [[ $LINE =~ '^<[+][+]>' ]] then # Extrai o nome do arquivo ( tudo apos o <++> ) FILENAME=${LINE#* } # Precisa criar diretorios? if [[ $FILENAME =~ '/' ]] then DIRNAME=${FILENAME%/*} mkdir -p $DIRNAME fi # Se arquivo existe, entao o deleta. [ -e "$FILENAME" ] && rm -f "$FILENAME" 2> /dev/null # Confere se e' possivel criar arquivo if ! touch $FILENAME 2> /dev/null then echo "Could not extract $FILENAME" exit 1 fi echo "- Extracting $FILENAME" # Gravar no arquivo ate encontrar <--> else if ! [[ $LINE =~ '^<-->' ]] then echo -E "$LINE" >> $FILENAME fi fi done } [ -z "$1" ] && echo "Usage: $0 <inputfile>" && exit 1 sed -n '/^<++>/,/^<-->/p' "$1" | extract
Reiniciar modem via Shell Script
Inicializando os serviços de OmniBus
Configuração Automática de Servidor de Arquivos
Aprenda a Gerenciar Permissões de Arquivos no Linux
Como transformar um áudio em vídeo com efeito de forma de onda (wave form)
Como aprovar Pull Requests em seu repositório Github via linha de comando
Visualizar arquivos em formato markdown (ex.: README.md) pelo terminal
Dando - teoricamente - um gás no Gnome-Shell do Arch Linux
Como instalar o Google Cloud CLI no Ubuntu/Debian
Mantenha seu Sistema Leve e Rápido com a Limpeza do APT!
Procurando vídeos de YouTube pelo terminal e assistindo via mpv (2025)
O que você está ouvindo agora? [2] (183)
Gestão de Ambiente em uma rede Linux (2)
Ajuda Pra Melhoria do NFTABLES. (7)
Zorin OS - Virtual Box não consigo abrir maquinas virtuais (4)