Textdokument durch Script ändern!

B

BenjiX

Eroberer
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!
 
Zuletzt bearbeitet:
Mach dir eine Datei namens sedfile.
Dort schreibst du alle Kommandos rein du du haben willst:
Code:
s/daß/dass/g
s/muß/muss/g

dann kopierst du dir die zu ändernde Datei:
Code:
cp change_me.txt change_me.txt.bak
dann lässt du sed arbeiten:
Code:
sed -f sedfile change_me.txt.bak > change_me.txt

Probier es erstmal mit einer Dummydatei..
 
BenjiX schrieb:
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
 

Ähnliche Themen

chown Befehl in einem Script

Hilfe für ein shell script

Keine grafische Oberfläche (Debian Installation)

Script zur Korrektur einer E-Book Datei

Queue für copy Script

Zurück
Oben