Textdatei mit Formatierungen ausgeben



  • Hallo,

    ich würde gerne ein kleines Shellscript schreiben,
    das mir eine Textdatei in ein aus '*' gezeichneten Rahmen ausgibt.
    Also in etwa so:

    ******************************************
    *Inhalt von Textdatei                    *
    ******************************************
    

    Der rechte Rand sollte immer bei x Zeichen liegen.

    Ich sehe vier Grundansätze, was ich tue:

    1. die 'cat' ausgabe nach 'sed' pipen
    (allerdings bekomme damit wohl den rechten Rand nicht ausgerichtet.

    2. mich in groff einarbeiten und das als Tabelle
    erstellen

    3. Ein C Programm schreiben.
    (geht fix, aber würde mich trotzdem lieber auf ein Script beschränken)

    4. Was andres, was ihr mir jetzt sagt 😉



  • #!/bin/sh
    
    ROWS=`stty -a|head -n 1|cut -d ';' -f 2|sed 's,rows,,'`
    COLS=`stty -a|head -n 1|cut -d ';' -f 3|sed 's,columns,,'`
    SEQ=jot
    
    HR="\033[0;32m"
    for f in `$SEQ $COLS`; do HR=$HR\*; done
    HR=$HR"\033[0;0m\n"
    printf "$HR"
    while read line; do 
    	line=`echo "$line" | tr '\t' '        '` 
    	cnt=$(($COLS - `echo "$line"|wc -m` - 2))
    	#echo $cnt
    	printf "\033[0;32m\*\033[0;0m %s%${cnt}s\033[0;32m\*\033[0;0m\n" "$line" "";
    done < $1;
    printf "$HR"
    

    ROWS/COLS: dieser Weg sollte auf FreeBSD(dort hab ich es gebaut) und Linux genauso funktionieren
    SEQ: auf FreeBSD und anderen BSDs normalerweise jot, auf Linux und vermutlich vielen SysV systemen seq.

    🙂

    ANSI Escape uebersicht:
    http://www.bluesock.org/~willg/dev/ansi.html

    --
    Anreas



  • Oh, wow.
    Hätte niemals ein komplettes Script erwartet 😉

    Sind viele neue Tricks bei, dankeschön
    und schönes Wochende.


Anmelden zum Antworten