2010-10-27 9 views
14

Recientemente me encontré siguiente comando grep:¿Cómo hacer que sed lea el script desde el archivo de script?

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

cual según mi entendimiento significa que a partir de entrada.txt, grep la materia contenida en grep.txt y la enviará en Output.txt.

Quiero hacer algo similar para sed, es decir, quiero mantener los comandos sed en un archivo separado (digamos sed.txt) y quiero aplicarlos en el archivo de entrada (digamos input.txt) y crear un archivo de salida (say output.txt).

me trataron siguiente:

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

No funciona y me da el siguiente error:

sed: command garbled 

El contenido de los archivos mencionados anteriormente son las siguientes:

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 

Por favor consejo.

Respuesta

30

Su sed.txt solo debe contener sed comandos: Sin prefijo con sed o sufijo con un archivo de entrada. En su caso, probablemente debería ser:

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

Cuando corrieron en su entrada:

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

En lugar de mantener los comandos sed en un archivo de texto separado, es posible que desee probar la creación de una script de sed a continuación el archivo se puede ejecutar directamente en los archivos de datos:

./myscript.sed inputfile.txt> OutputFile.txt

#!/bin/sed -f 
s/234/acn/ 
s/78gt/hit/ 
Cuestiones relacionadas