PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Zeilen mit Zeilenumbruch mittels echo in neue Datei schreiben



Chito
06-04-2008, 19:25
Hallo,


ich habe folgendes Anliegen.

Ich möchte die nummerierten Zeilen in eine tmp Datei schreiben um später den gewünschten Eintrag mit Zeilennummer finden zu können.

Leider spediert echo nach jeder Zeile ein Leerzeichen, nachdem der Umbruch erfolgte. also sind alle Zeilen dann in der neuen datei um ein Zeichen nach rechts versetzt.

Zudem scheint auch was mit der datei zu stimmen. ich denke das format passt nicht mehr, denn wenn ich die neue datei durchsuche, funktioniert das mit der suche nicht mehr ... die definierte zeile wird dann nicht mehr ausgegeben.


Anbei mal der code:

echo `cat -n $BIN_DIR` > tmp_BIN_DIR.$$ // neue Datei mit Zeilennummern

# sucht den gewuenschten Eintrag heraus und uebergibt den Eintrag an $SEARCH_ENTRY
SEARCH_ENTRY=`grep -i $DEL_FILE tmp_BIN_DIR.$$`
echo SEARCH_ENTRY: $SEARCH_ENTRY
// irgendwie wird der Eintrag nicht mehr gefunden, obwohl es vorher funktionierte (Dateiformat passt nicht?)

inhalt der neuen Datei:

1 data1 data2
2 data3 data 4


Es wird nach data3 gesucht und auch gefunden, bevor ich die Zeilen nummeriere. Also die vorhergehende Indexdatei kann durchsucht werden.

Woran liegt das, dass es nun nicht mehr geht?

ContainerDriver
06-04-2008, 19:37
Hallo.



echo `cat -n $BIN_DIR` > tmp_BIN_DIR.$$ // neue Datei mit Zeilennummern

Wieso gibts du denn die Ausgabe von cat an echo weiter? Das echo könnte man auch weglassen, also


cat -n $BIN_DIR > tmp_BIN_DIR.$$
. Allerdings sind dann vor den Zahlen einige Leerzeichen zu finden, wenn die dich stören, musst du die halt noch wegschneiden.



# sucht den gewuenschten Eintrag heraus und uebergibt den Eintrag an $SEARCH_ENTRY
SEARCH_ENTRY=`grep -i $DEL_FILE tmp_BIN_DIR.$$`
echo SEARCH_ENTRY: $SEARCH_ENTRY
// irgendwie wird der Eintrag nicht mehr gefunden, obwohl es vorher funktionierte (Dateiformat passt nicht?)

inhalt der neuen Datei:

1 data1 data2
2 data3 data 4


Es wird nach data3 gesucht und auch gefunden, bevor ich die Zeilen nummeriere. Also die vorhergehende Indexdatei kann durchsucht werden.

Woran liegt das, dass es nun nicht mehr geht?

Warum die Suche nicht mehr funktioniert, kann ich dir auch nicht sagen, dein Code schaut richtig aus.

Übrigens: verwende, um Quellcode zu posten, besser die Code-Tags.

Gruß, Florian

Chito
06-04-2008, 19:49
Vielen Dank Florian,

wieso das nicht funktionierte kann ich dir sagen:

cat -n $BIN_DIR > tmp_BIN_DIR.$$

durch das echo von mir wurde die datei nicht wirklich Zeilenweise gefüllt. Somit beinhaltete die datei und einen String mit visuellen Zeilenumbrüchen ... nicht aber wirklich Zeilen, die später wieder ausgelesen werden können.

Nun funktioniert alles bei mir.



wow ... so langsam macht mir das ganze wirklich spass^^

Chito
06-04-2008, 20:03
öhm ... eine sache ist da noch.

Wieso wird hier der entsprechender eintrag in der datei nicht gelöscht?


# !!!!!!!! HIER wird immer nur die 1 Zeile gelöscht
awk 'NR != $FIND_NUM' $BIN_DIR > tmp.$$; mv tmp.$$ $BIN_DIR

$FIND_NUM ist die gefundene Zeilennummer.
Ich glaube es ging mal so ... bin aber etwas verwundert wieso das jetzt so nicht mehr geht.

Kann du bitte noch einmal fix über den code schauen.


vielen dank^^

Chito
06-04-2008, 20:32
Vielen Dank für deine Gesamte Unterstützung. Konnte das Problemchen eben selbst lösen. Vielen Dank für alles ;)