Zeile mit beliebigen Sonderzeichen ausgeben

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von Gast123, 26.01.2012.

  1. #1 Gast123, 26.01.2012
    Gast123

    Gast123 Guest

    Hallo Leute,

    leider habe ich keine Lösung für mein Problem im Netz gefunden.
    Ich habe eine zufällig generierte Textdatei, die ich zeilenweise auslesen möchte.
    Dies mache ich mit
    Code:
    while read LINE; do /bin/echo -E "$FILE"; done < file;
    Leider interpretiert echo Sonderzeichen, sodass z.B. bei einem aufkommenden "\" dieses als Esacape Character für das folgende Zeichen gewertet wird.
    Das möchte ich aber nicht. Ich will stumpf den Zeichstring in $LINE ausgeben.
    Kann mir jemand einen Tipp geben, wie ich das realisieren könnte?

    Danke schonmal.

    MfG

    Schard
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 marcellus, 26.01.2012
    marcellus

    marcellus Kaiser

    Dabei seit:
    09.05.2007
    Beiträge:
    1.392
    Zustimmungen:
    0
    Zum einen Zeilenweise ausgeben von binären Daten kannst du vergessen, du hast die Zeichenfolge \CR\LF (Carriage Return, Line Feed), die deine Zeilen trennen soll, aber da du die Daten ja nicht interpretieren willst kannst du auch nicht wissen wo die Zeilenumbrüche sind.

    Zusätzlich hast du noch einen riesigen Haufen an Zeichen, die keine Zeichen haben, Steuerzeichen und dergleichen.

    Was willst du überhaupt machen?
     
  4. #3 Gast123, 26.01.2012
    Zuletzt von einem Moderator bearbeitet: 26.01.2012
    Gast123

    Gast123 Guest

    Hey, habe es zufällig (Probieren geht eben doch über Studieren) so gelößt:
    Code:
    #! /bin/bash
    
    TEMPLATE=`dirname $0`/fortune-template.htt
    OUTPUT_FILE=`dirname $0`/fortune-web.html
    TMP_FILE=/tmp/fortune-cowsay.tmp
    
    COWFILES="`cowsay -l | grep -vi "cow files in"`"
    COWFILE="`for COW in $COWFILES; do echo $COW; done | tail -n $(($RANDOM % $(for COW in $COWFILES; do echo $COW; done | wc -l) + 1)) | head -n 1`"
    FORTUNE="`fortune -s`"
    
    while (( $# )); do
    	case $1 in
    		--template|-t)	TEMPLATE=$2
    				shift 2
    		;;
    		--tmp)		TMP_FILE=$2
    				shift 2
    		;;
    		--output|-o)	OUTPUT_FILE=$2
    				shift 2
    		;;
    		*)		echo "Unrecognized argument \"$1\"." 1>&2
    				shift
    	esac
    done		
    
    test -f $OUTPUT_FILE && rm $OUTPUT_FILE
    
    while read LINE; do	
    	if [ "$LINE" != "%FORTUNE%" ]; then
    		echo "$LINE" >> $OUTPUT_FILE
    	else
    		cowsay -f $COWFILE "$FORTUNE" > $TMP_FILE
    
    		LINES=`wc -l $TMP_FILE | cut -d " " -f 1`
    		I=1
    
    		while [ $LINES -ge $I ]; do
    			echo -n "<p> " >> $OUTPUT_FILE 
    			tail -n +$I /tmp/fortune-cowsay.tmp | head -n 1 | sed -e "s/ /\ /g" >> $OUTPUT_FILE
    			echo -n " </p>" >> $OUTPUT_FILE
    			I=$(($I+1))
    		done < $TMP_FILE
    	fi
    done < $TEMPLATE
    Wobei
    Code:
    tail -n +$I /tmp/fortune-cowsay.tmp | head -n 1 | sed -e "s/ /\ /g" >> $OUTPUT_FILE
    das "Zauberwort" ist.

    Das Skript generiert ein HTML-Dokument mit einem randomisierten cowsay-fortune als Homepage meiner Website.
    Ist erstmal nur eine Spielerei zum Testen.
     
Thema:

Zeile mit beliebigen Sonderzeichen ausgeben

Die Seite wird geladen...

Zeile mit beliebigen Sonderzeichen ausgeben - Ähnliche Themen

  1. Suche in Datei doppelte Wörter in jeder Zeile bis zum dritten Leerzeichen...

    Suche in Datei doppelte Wörter in jeder Zeile bis zum dritten Leerzeichen...: Ich habe eine Textdatei in der ich Einträge bis zum 3. Leerzeichen mit den restlichen Zeilen (auch nur bis 3. Leerzeichen) vergleichen muss und...
  2. 2 Zeilen aus einer txt auslesen

    2 Zeilen aus einer txt auslesen: Hallo Leute, ich habe eine Datei die immer aus zwei zusammenhängenden Zeilen besteht, als Beispiel: DE0006231004 # 15,04 Infineon DE0005785604...
  3. Zeichen an Zeilenanfang für bestimmten Zeilenbereich einfügen

    Zeichen an Zeilenanfang für bestimmten Zeilenbereich einfügen: Hallo, ich würde gerne in einem Textdokument, z.B. von Zeile 10 - 18, an den Zeilenanfang ein # einfügen. Habe mir schon diverse Seiten zu SED...
  4. for schleife für eine Zeile

    for schleife für eine Zeile: Hallo, ich bin neu hier in diesem Forum. Evtl. kann mir ja einer von euch bei meinem Problem helfen. Ich möchte für ein entpackprogramm eine...
  5. Textdatei zeilenweise in durchnummerierte Variablen schreiben

    Textdatei zeilenweise in durchnummerierte Variablen schreiben: Hi Leute, ich versuche folgendes Problem zu lösen. Ich möchte eine Textdatei einlesen und den Inhalt jeder Zeile in immer eine neue Variable...