Shell-Ersetzungs-Shell-Skript unter AIX

3256
Grv

Ich verwende AIX, und es gibt keine -iOption in der Version von sedIch verwende:

sed: illegal option -- i Usage: sed [-n] Script [File ...] sed [-n] [-e Script] ... [-f Script_file] ... [File ...] 

Ich möchte den Pfad des Verzeichnisses in einer Datei mit einem Skript ersetzen. Ich versuche es so:

WORKDIR="/workdir/liv/spool" ARCHIVE="u/user/new"  sed 's/$WORKDIR/$ARCHIVE/ig' test.dat > abc mv abc test.dat 

was gibt den fehler:

sed: Function s/$WORKDIR/$STRATIXARCHIVE/ig cannot be parsed. 

Ich möchte alle Vorkommen gleich wie $ WORKDIR durch $$ ARCHIVE ersetzen

0

1 Antwort auf die Frage

1
Jack

Shell variables only resolve between Double Quotes (").

sed "s/$WORKDIR/$ARCHIVE/ig" test.dat > abc (Double quotes)

Would work if not for the forward slashes. Sed can use any character to delimit those input fields and forward slash is perhaps not the best choice due to it's use for directory paths. For example you can use this instead:

sed "s#$WORKDIR#$ARCHIVE#ig" test.dat > abc

Dies ist nicht der Fall, da der Inhalt der Variablen Schrägstriche enthält: Verwenden Sie für den Befehl `s` unterschiedliche Begrenzungszeichen:` sed 's: $ WORKDIR: $ ARCHIVE: ig "test.dat> abc` glenn jackman vor 8 Jahren 0
Funktioniert gut # Trennzeichen arbeitete für mich Grv vor 8 Jahren 0