]>
nuage.metani.fr Git - 3GPP.git/blob - bin/docx2asn.sh
3 if [[ $# -eq 0 ]] ; then
4 echo "Usage: ${0##*/} file [files]"
5 echo "Extract ASN.1 from one or more 3GPP 38.331 docx files and save then to .asn files"
10 echo "Cannot write to current directory"
17 Linux
) libreoffice
="libreoffice" ;;
18 CYGWIN
*) libreoffice
="soffice" ;;
19 *) echo "Unkown platform $platform"
23 if [[ ! -x $(which "$libreoffice") ]] ; then
24 echo "Cannot find libreoffice executable"
25 echo "Make sure it is installed and the PATH variable includes its path"
29 while [ "$#" -gt 0 ]; do
33 if [[ ! -f "$1" ]] || [[ ! -r "$1" ]] ; then
34 echo "$1 is not a readable file"
39 if [[ -e "${1%.docx}.txt" ]] ; then
40 echo "${1%.docx}.txt already exists: skipping conversion"
43 $libreoffice --convert-to txt
"$1"
45 if [[ ! -f "${1%.docx}.txt" ]] || [[ ! -r "${1%.docx}.txt" ]] ; then
46 echo "libreoffice did not create ${1%.docx}.txt"
51 # On windows, soffice adds CR characters at line ends and produces EN-DASH in Windows-1252 enconding, i.e. 0x96
52 # Remove the CR at each line end and convert EN-DASH to normal minus
54 LC_ALL
=C
sed -i $
's/\x96/-/g' "${1%.docx}.txt"
55 LC_ALL
=C
sed -i $
's/\r$//' "${1%.docx}.txt"
59 if [[ -e "${1%.docx}.asn" ]] ; then
60 echo "${1%.docx}.asn already exists: not regenerated"
66 cat "${1%.docx}.txt" | awk '/^-- ASN1START$/,/^-- ASN1STOP$/' | grep -Evxe '-- ASN1ST(ART|OP)' | grep -v '^--' | awk 'NF || p; { p = NF }' p
=0 > "${1%.docx}.asn"
68 if [[ -e "${1%.docx}.asn" ]] ; then
69 echo "${1%.docx}.asn was generated"