Zeile mit beliebigen Sonderzeichen ausgeben

G

Gast123

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
 
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?
 
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.
 
Zuletzt bearbeitet von einem Moderator:

Ähnliche Themen

Summe von Zahlen in einer Zeilen bilden

Textdatei zeilenweise in durchnummerierte Variablen schreiben

Zeile für Zeile auslesen und Befehl ausführen

Script um Volumes u. vroot verzeichniss auszulesen

Parameter einer Variable zuordnen

Zurück
Oben