the software que unix shell piping

software - Combinando eco y gato en Unix



que es pipeline software (6)

Pregunta realmente simple, ¿cómo combino echo y cat en el intérprete de comandos, estoy tratando de escribir el contenido de un archivo en otro archivo con una cadena antes de que aparezca?

Si / tmp / file se ve así:

this is a test

Quiero ejecutar esto:

echo "PREPENDED STRING" cat /tmp/file | sed ''s/test/test2/g'' > /tmp/result

para que / tmp / result tenga el siguiente aspecto:

PREPENDED STRINGthis is a test2

Gracias.


Esto debería funcionar:

echo "PREPENDED STRING" | cat - /tmp/file | sed ''s/test/test2/g'' > /tmp/result


O simplemente usa solo sed

sed -e ''s/test/test2/g s/^/PREPEND STRING/'' /tmp/file > /tmp/result


O también:

{ echo "PREPENDED STRING" ; cat /tmp/file | sed ''s/test/test2/g'' } > /tmp/result


Otra opción: suponiendo que la cadena antepuesta solo debería aparecer una vez y no para cada línea:

gawk ''BEGIN {printf("%s","PREPEND STRING")} {gsub(/test/, "&2")} 1'' in > out


Tratar:

(printf "%s" "PREPENDED STRING"; sed ''s/test/test2/g'' /tmp/file) >/tmp/result

Los paréntesis ejecutan los comandos dentro de una subcadena, de modo que la salida se vea como una sola secuencia para el redireccionamiento >/tmp/result .


Si esto es alguna vez para enviar un correo electrónico, recuerde usar terminaciones de línea CRLF, así:

echo -e ''To: [email protected]/r'' | cat - body-of-message / | sed ''s/test/test2/g'' | sendmail -t

Observe el -e -flag y el / r dentro de la cadena.

Configuración para: de esta manera en un bucle le proporciona el envío masivo de correo masivo simple del mundo.