Script di shell di sostituzione stringa su AIX


0

Sto usando AIXe non esiste -iun'opzione disponibile nella versione di sedSto usando:

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

Voglio sostituire il percorso della directory in uno dei file usando uno script; Sto provando in questo modo:

WORKDIR="/workdir/liv/spool"
ARCHIVE="u/user/new"

sed 's/$WORKDIR/$ARCHIVE/ig' test.dat > abc
mv abc test.dat

che dà l'errore:

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

Vorrei sostituire tutte le occorrenze uguali a $ WORKDIR con $$ ARCHIVE

Risposte:


1

Le variabili shell si risolvono solo tra virgolette doppie (").

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

Funzionerebbe se non per le barre in avanti. Sed può usare qualsiasi carattere per delimitare quei campi di input e la barra non è forse la scelta migliore a causa del suo uso per i percorsi delle directory. Ad esempio puoi usare questo invece:

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


Non lo farà, perché ci sono barre nei contenuti delle variabili: usare diversi delimitatori per il scomando:sed "s:$WORKDIR:$ARCHIVE:ig" test.dat > abc
glenn jackman

Funziona bene # delimitatore ha funzionato per
me
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.