Cómo modificar la salida en la tubería de comando bash

10

Por ejemplo, obtuve de algún comando algunas líneas

$ some-command
John
Bob
Lucy

Ahora me gustaría agregar el comando de encadenamiento, que modifica la salida.

$ some-command | other-command
Hi John Bye
Hi Bob Bye
Hi Lucy Bye

Cómo escribir other-command? (Soy un novato en bash)

Telar
fuente

Respuestas:

16

awk

$ some-command | awk '{print "Hi "$1" Bye"}'

sed

$ some-command | sed 's/\(.*\)/Hi \1 Bye/'

Ejemplos

Utilizando awk:

$ echo -e "John\nBob\nLucy" | awk '{print "Hi "$1" Bye"}'
Hi John Bye
Hi Bob Bye
Hi Lucy Bye

Utilizando sed:

$ echo -e "John\nBob\nLucy" | sed 's/\(.*\)/Hi \1 Bye/'
Hi John Bye
Hi Bob Bye
Hi Lucy Bye
slm
fuente
Se le olvidósome-command | paste -d\ <(printf '%s\n' Hi Hi Hi) - <(printf '%s\n' why Why WHY??)
kojiro
@kojiro - no estaba sintiendo el pastecamino hoy, gracias 8-)
slm
5

El siguiente código lee línea tras línea, almacenándolo en variable LINE. Dentro del bucle, cada línea se vuelve a escribir en la salida estándar, con la adición de "Hola" y "Adiós"

#!/bin/bash

while read LINE ; do
   echo "Hi $LINE Bye"  
done
brm
fuente
4

Bash mientras bucle y tuberías:

echo -e "John\nBob\nLucy" | while read n; do echo "hi $n bye"; done
Uno de uno
fuente