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)

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

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

4

Bash mientras bucle y tuberías:

echo -e "John\nBob\nLucy" | while read n; do echo "hi $n bye"; done
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.