Cara memodifikasi output di pipeline perintah bash


10

Sebagai contoh, saya mendapat dari beberapa perintah beberapa baris

$ some-command
John
Bob
Lucy

Sekarang saya ingin menambahkan perintah chaining, yang memodifikasi output.

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

Bagaimana cara menulis other-command? (Saya seorang pemula di bash)

Jawaban:


16

awk

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

sed

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

Contohnya

Menggunakan awk:

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

Menggunakan sed:

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

Anda lupasome-command | paste -d\ <(printf '%s\n' Hi Hi Hi) - <(printf '%s\n' why Why WHY??)
kojiro

@kojiro - tidak merasakan pastejalan hari ini, terima kasih 8-)
slm

5

Kode di bawah ini membaca baris demi baris, menyimpannya dalam variabel LINE. Di dalam loop, setiap baris ditulis kembali ke output standar, dengan penambahan "Hai" dan "Sampai jumpa"

#!/bin/bash

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

4

Bash sementara loop dan pipa:

echo -e "John\nBob\nLucy" | while read n; do echo "hi $n bye"; done
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.