Converter arquivo bibtex para texto formatado e vice-versa

Publicado por Iago Lira (última atualização em 28/06/2018)

[ Hits: 6.372 ]

Homepage: https://notabug.org/iagolira/

Download bib2text.sh




Resumo:

Para você, que trabalha com elaboração de livros, artigos ou trabalhos (escolares ou universitários), precisa constantemente referenciar obras, livros ou artigos em suas bibliografias.

Então, se você é um iniciante, você poderá usar ou modificar este script para suas necessidades.

Com este você irá montar sua bibliografia, tanto para Latex, Word, Libre(BR)Office etc, facilmente.

Exemplo de entradas:

Obs.: dê autorização de execução do script: chmod +x bib2text.sh

1) Para ver as opções disponíveis digite: ./arquivo.sh
2) Para entrar com os valores manualmente digite: ./bib2text.sh -f 1 -b 2
3) Para converter um arquivo bib para texto formatado (modelo: -b 2 -> livro e -b 1 -> artigo): ./bib2text.sh -f nome.bib -b 2

  



Esconder código-fonte

#!/bin/bash
#+----------------------------------+
#|Program: bib2text                 |
#|Version: 1.0.1                    |
#|Autor: Francisco Iago Lira Passos |
#|Data: 03-06-2018                  |
#+----------------------------------+

function bib2text()
{

#Begin: aliases
    author=$(grep -iE author $1 | grep -io -P '(?<={).*(?=},)' | sed 's/[aA]nd/e/g')
    titulo=$(grep -iE title $1 | grep -io -P '(?<={).*(?=},)')
    journal=$(grep -iE journal $1 | grep -io -P '(?<={).*(?=},)')
    volume=$(grep -iE volume $1 | grep -io -P '(?<={).*(?=},)')
    issue=$(grep -iE issue $1 | sed 's/[^0-9]//g')
    publisher=$(grep -iE publisher $1 | grep -io -P '(?<={).*(?=},)')
    edition=$(grep -iE edition $1 | sed "s/^//g" | grep -io -P '(?<={).*(?=},)')
    year=$(grep -iE year $1 | grep -io -P '(?<={).*(?=})')
    doi=$(grep -iE doi $1 | grep -io -P '(?<={).*(?=},)')

    echo "$author. $titulo. $journal $volume, $issue, $publisher, $edition, $year, $doi."
#End: aliases
}

function text2bib()
{
#Begin: aliases

   if [ "$1" == "1" ]; then
      while :
      do
         read -p "Digite uma aliase para o arquivo bib: " ali
         [[ -f $ali.bib ]] && { echo "Arquivo existente, por favor, digite outro nome." ; continue ; } || break
      done
      read -p "Digite o(s) autor(es) (ex: Passos, FIL): " author
      read -p "Digite o título: " titulo
      read -p "Digite o jornal: " journal
      read -p "Digite o volume: " volume
      read -p "Digite o ISSUE: " issue
      read -p "Digite a publicadora: " publisher
      read -p "Digite a edição: " edition
      read -p "Digite o ano do jornal: " year
      read -p "Digite a DOI: " doi

      echo "
      @Article{$ali,
      author = {$author},
      title = {$titles},
      journal = {$journal},
      year = {$year},
      OPTpublisher = {$publisher},
      OPTkey = {},
      OPTvolume = {},
      OPTissue = {$issue},
      OPTnumber = {},
      OPTpages = {},
      OPTmonth = {},
      OPTnote = {},
      OPTannote = {}
      OPTdoi = {$doi}
      }" >> $ali.bib

   elif [ "$1" == "2" ]; then
      while :
      do
         read -p "Digite uma aliase para o arquivo bib: " ali
         [[ -f $ali.bib ]] && { echo "Arquivo existente, por favor, digite outro nome." ; continue ; } || break
      done
      read -p "Digite o(s) autor(es): " author
      read -p "Digite o título: " titulo
      read -p "Digite o volume (ex.: volume 1): " volume
      read -p "Digite a publicadora: " publisher
      read -p "Digite a edição: " edition
      read -p "Digite o ano do livro: " year

       echo "
      @Book{$ali,
      author = {$author},
      title = {$titulo},
      publisher = {$publisher},
      year = {$year},
      OPTvolume = {$volume},
      OPTaddress = {},
      OPTedition = {$edition},
      OPTmonth = {},
      OPTnote = {}
      }" >> $ali.bib

   fi
    cat $ali.bib

    echo "$author. $titulo, $volume. $publisher, $year."
#End: aliases
}



function erro()
{
    echo "
    +-------------------------------------------------------+
    |    Para você ter uma boa experiência com o script     |
    |    siga um dos seguintes passos:                      |
    +-------------------------------------------------------+
    | [1] $ chmod +x bib2text.sh                            |
    | [2] $ ./bib2text.sh -f <file.bib|1> -b <1|2>          |
    |                                                      |
    | Opção -f                                             |
    |   file.bib -> arquivo bib de um único jornal         |
    |   1 -> saída para entrada manual                     |
    | Opção -b                                             |
    |   1 -> artigo                                        |
    |   2 -> livro                                         |
    +-------------------------------------------------------+"
}


case $2 in
"1") text2bib $4
;;
*.bib) bib2text $2
;;
*) erro
;;
esac

Scripts recomendados

organização_topografia primeiro arquivo

Solus_Linux_Otimizacao_Limpeza_e_Tutorial_20_comandos do_Terminal_Linux

simulado

Administração de usuários em shell script

Script para fazer levantamento de Hardware e Software


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts