Skip to content
Snippets Groups Projects
Commit 2223a855 authored by Pedro Folloni Pesserl's avatar Pedro Folloni Pesserl
Browse files

tshell:p3:sed one liner

parent 95d1be3d
Branches
No related tags found
No related merge requests found
...@@ -24,9 +24,7 @@ confere_arq_saida() { ...@@ -24,9 +24,7 @@ confere_arq_saida() {
exit 2 exit 2
fi fi
if [ ! -f $1 ]; then echo "version+pmid<title<abstract<keywords" > $1
touch $1
fi
} }
XML=$1 XML=$1
...@@ -37,32 +35,68 @@ CSV=$2 ...@@ -37,32 +35,68 @@ CSV=$2
confere_arq_saida $CSV confere_arq_saida $CSV
CSV=$(realpath $CSV) CSV=$(realpath $CSV)
# separar os campos úteis do arquivo xml.gz # converter o arquivo xml.gz para o formato csv
zcat $XML | \ zcat $XML | \
xgrep -tx "//PMID|//ArticleTitle|//Abstract|//MeshHeadingList" | \ xgrep -tx "//PMID|//ArticleTitle|//Abstract|//MeshHeadingList" | \
# o sed acha um campo PMID, seguido de um campo ArticleTitle, seguido # o sed acha os campos úteis -- PMID seguido de ArticleTitle seguido
# de um campo Abstract, e imprime. Se houver um campo MeshHeadingList # de Abstract, seguido ou não de MeshHeadingList -- e converte no
# após o Abstract, imprime também; se não, insere um vazio. # formato csv. No caso de não haver MeshHeadingList para um dado artigo,
# cria um campo vazio (<).
sed -En ' sed -En '
/<PMID/{ /PMID/{
s/<PMID Version="//;
s/">//;
s/<\/PMID>//;
N; N;
/<ArticleTitle>/{
/ArticleTitle/{
s/<ArticleTitle>/</;
s/<\/ArticleTitle>//;
N; N;
/<Abstract>/{
/Abstract/{
s/<Abstract> *<AbstractText>/</;
s/<\/AbstractText> *<\/Abstract>//;
p; p;
n; n;
/<MeshHeadingList>/{
/MeshHeadingList/{
s/ *<MeshHeading> *<Descriptor[^>]*>//g;
s/(<\/DescriptorName>|<\/QualifierName>) *(<Qualifier[^>]*>|<\/MeshHeading>)/, /g;
s/<MeshHeadingList>/</;
s/(, *|)<\/MeshHeadingList>//;
p; p;
}; };
/<PMID/{
i <MeshHeadingList></MeshHeadingList> /PMID/{
i <
} }
} }
} }
}' > $CSV }' >> $CSV
# converter para o formato csv
# sed -i '
# /PMID/{
# s/<PMID Version="//;
# s/">//;
# s/<\/PMID>//;
# }
# /ArticleTitle/{
# s/<ArticleTitle>/</;
# s/<\/ArticleTitle>//;
# }
# /<[^>]*>/ # /Abstract/{
# s/<Abstract> *<AbstractText>/</;
# s/<\/AbstractText> *<\/Abstract>//;
# }
# /MeshHeadingList/{
# s/ *<MeshHeading> *<Descriptor[^>]*>//g;
# s/\(<\/DescriptorName>\|<\/QualifierName>\) *\(<Qualifier[^>]*>\|<\/MeshHeading>\)/, /g;
# s/<MeshHeadingList>/</;
# s/\(, *\|\)<\/MeshHeadingList>//;
# }' $CSV
# inserir a linha de cabeçalho no arquivo
sed -i '1i version+pmid<title<abstract<keywords' $CSV
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment