tsv2layout

Des scripts pour imprimer les données dans TSV sous la forme d'un layout prédéfini - retour accueil

git clone git://bebou.netlib.re/tsv2layout
Log | Files | Refs | README |

tsv2layout.printf (562B)


      1 #! /bin/sh
      2 
      3 tmpd=$(mktemp -d)
      4 trap "rm -rf $tmpd" EXIT
      5 
      6 layout=$(< $1 sed -E 's/\$[a-zA-Z]+/%s/g')
      7 nbargs=$(echo "$layout" | grep -o '%s' | wc -l)
      8 maxargs=$(echo "4096/$nbargs*$nbargs" | bc)
      9 
     10 cat > $tmpd/in
     11 
     12 < $tmpd/in head -n1 | tr '	' '\n' | nl -n ln -w1 > $tmpd/vars
     13 
     14 for var in $(< $1 grep -wEo '\$[a-zA-Z]+' | tr -d '$');do
     15 	grep "$var" $tmpd/vars
     16 done |
     17 	cut -f1 | paste -s -d',' |
     18 	xargs -I{} awk -F'\t' -v col={} '
     19 	BEGIN{getline;n=split(col,cols,",")}
     20 	{ for (i=1;i<n+1;i++) { print $cols[i] } }' $tmpd/in |
     21 	xargs -d'\n' -n$maxargs printf "$layout\n"
     22