2010-10-27 15 views
14

Recentemente mi sono imbattuto seguente comando grep:Come rendere sed leggere lo script dal file di script?

/usr/xpg4/bin/grep -Ff grep.txt input.txt > output.txt 

che secondo la mia comprensione significa che da input.txt, grep la materia contenuta nel grep.txt e l'uscita a output.txt.

Voglio fare qualcosa di simile per sed cioè voglio mantenere i comandi sed in un file separato (ad esempio sed.txt) e voglio applicarli sul file di input (ad esempio input.txt) e creare un file di output (dì output.txt).

ho cercato seguente:

/usr/xpg4/bin/sed -f sed.txt input.txt > output.txt 

Non funziona ed ottengo il seguente errore:

sed: command garbled 

Il contenuto del file di cui sopra sono le seguenti:

sed.txt

sed s/234/acn/ input.txt 
sed s/78gt/hit/ input.txt 

input.txt

234GH 
5234BTW 
89er 
678tfg 
234 
234YT 
tfg456 
wert 
78gt 
gh23444 

Si prega di consulenza.

risposta

30

Il sed.txt deve contenere solo i comandi sed: Nessun prefisso con sed o suffisso con un file di input. Nel tuo caso probabilmente dovrebbe essere:

# sed.txt 
s/234/acn/ 
s/78gt/hit/ 

Quando correva sul vostro input:

$ /usr/xpg4/bin/sed -f sed.txt input.txt 
 
acnGH 
5acnBTW 
89er 
678tfg 
acn 
acnYT 
tfg456 
wert 
hit 
ghacn44 
12

Piuttosto che raccogliere i comandi sed in un file di testo separato, si potrebbe voler provare a creare un script sed. Il file di seguito può essere eseguito direttamente sui vostri file di dati:

./myscript.sed inputfile.txt> outputfile.txt

#!/bin/sed -f 
s/234/acn/ 
s/78gt/hit/ 
Problemi correlati