Как изменить вывод в командном конвейере bash


10

Например, я получил из какой-то команды несколько строк

$ some-command
John
Bob
Lucy

Теперь я хотел бы добавить команду цепочки, которая изменяет вывод.

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

Как писать other-command? (Я новичок в Bash)

Ответы:


16

AWK

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

СЭД

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

Примеры

Использование awk:

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

Использование sed:

$ echo -e "John\nBob\nLucy" | sed 's/\(.*\)/Hi \1 Bye/'
Hi John Bye
Hi Bob Bye
Hi Lucy Bye

Вы забылиsome-command | paste -d\ <(printf '%s\n' Hi Hi Hi) - <(printf '%s\n' why Why WHY??)
Кодзиро

@kojiro - не чувствовал себя pasteсегодня, спасибо 8-)
slm

5

Код ниже читает строку за строкой, сохраняя ее в переменной LINE. Внутри цикла каждая строка записывается обратно в стандартный вывод с добавлением «Привет» и «Пока»

#!/bin/bash

while read LINE ; do
   echo "Hi $LINE Bye"  
done

4

Баш пока петля и трубы:

echo -e "John\nBob\nLucy" | while read n; do echo "hi $n bye"; done
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.