PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Textdokument durch Script ändern!



BenjiX
12.05.2004, 14:04
Hi!

Gibts eine Möglichkeit damit ich mit einem Script eine beliebige Zeile (muss nur eine Zeile sein) ändere??
Ich habe es mir so vorgestellt:
1. aufrufen des Scripts
2. x eingeben was in Zeile y des Dokuments z stehen soll
und dann soll das Dokument z in der Zeile y der Text x stehen!

THX

//edit
hab den Befehl sed doch ich kommen mit dem nicht so ganz zurecht
hab mal fogendes eingegeben:

sed -e s #hallo#test#w datei

dieser Befehl sollte eigentlich die Datei datei nach hallo durchsuche und es durch test ersetzten. doch wenn ich es über die konsole ausführe macht er nichts dann muss ich STRG-C drücken um wieder was eingeben zu können!

hehejo
12.05.2004, 16:20
Mach dir eine Datei namens sedfile.
Dort schreibst du alle Kommandos rein du du haben willst:

s/daß/dass/g
s/muß/muss/g

dann kopierst du dir die zu ändernde Datei:

cp change_me.txt change_me.txt.bak
dann lässt du sed arbeiten:

sed -f sedfile change_me.txt.bak > change_me.txt

Probier es erstmal mit einer Dummydatei..

bluelupo
09.06.2004, 20:12
Hi!

Gibts eine Möglichkeit damit ich mit einem Script eine beliebige Zeile (muss nur eine Zeile sein) ändere??
Ich habe es mir so vorgestellt:
1. aufrufen des Scripts
2. x eingeben was in Zeile y des Dokuments z stehen soll
und dann soll das Dokument z in der Zeile y der Text x stehen!

THX

//edit
hab den Befehl sed doch ich kommen mit dem nicht so ganz zurecht
hab mal fogendes eingegeben:

sed -e s #hallo#test#w datei

dieser Befehl sollte eigentlich die Datei datei nach hallo durchsuche und es durch test ersetzten. doch wenn ich es über die konsole ausführe macht er nichts dann muss ich STRG-C drücken um wieder was eingeben zu können!

Hi BenjiX,

Aufruf deines Scriptes mit drei Aufrufparameter z.B. so
Syntax: do.sh <suchbegriff> <ersetzungstext> <dateiname>
Beispiel: do.sh test uebung suchdatei.txt

Inhalt deiner do.sh:


suchbegriff=$1
ersetzungstext=$2
dateiname=$3
sed 's/'$suchbegriff'/'$ersetzungstext'/g' $dateiname > $dateiname.tmp
mv $dateiname.tmp $dateiname


Das mit der Zeilennummernangabe würde ich weglassen da sed das ganz von alleine findet. Allerdings wenn das mehrmals vorkommt werden die Begriffe ebenfalls ersetzt. So gehts mit Angabe der Zeilennummer.

Aufruf: Beispiel: do.sh test uebung suchdatei.txt 35



suchbegriff=$1
ersetzungstext=$2
dateiname=$3
zeilennr=$4
sed ''$zeilennr's/'$suchbegriff'/'$ersetzungstext'/g' $dateiname > $dateiname.tmp
mv $dateiname.tmp $dateiname