Como modificar a saída no pipeline de comando do bash

8

Por exemplo, eu recebi de algum comando algumas linhas

$ some-command
John
Bob
Lucy

Agora eu gostaria de adicionar o comando chaining, que modifica a saída.

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

Como escrever other-command ? (Eu sou um novato no bash)

    
por Loom 04.02.2014 / 17:59

3 respostas

14

awk

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

sed

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

Exemplos

Usando awk :

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

Usando sed :

$ echo -e "John\nBob\nLucy" | sed 's/\(.*\)/Hi  Bye/'
Hi John Bye
Hi Bob Bye
Hi Lucy Bye
    
por 04.02.2014 / 18:11
5

O código abaixo lê linha após linha, armazenando-o na variável LINE . Dentro do loop, cada linha é escrita de volta para a saída padrão, com a adição de "Hi" e "Bye"

#!/bin/bash

while read LINE ; do
   echo "Hi $LINE Bye"  
done
    
por 04.02.2014 / 18:10
1

Bash while loop e pipes:

echo -e "John\nBob\nLucy" | while read n; do echo "hi $n bye"; done
    
por 05.02.2014 / 04:10

Tags