如何在bash命令管道中修改输出


10

例如,我从某些命令获得了一些内容

$ some-command
John
Bob
Lucy

现在,我想添加链接命令,以修改输出。

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

怎么写other-command?(我是bash的新手)

Answers:


16

awk

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

sed

$ 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 2014年

@kojiro- paste今天感觉不对,谢谢8
slm

5

下面的代码逐行读取,并将其存储在variable中LINE。在循环内部,将每行写回到标准输出,并加上“ Hi”和“ Bye”

#!/bin/bash

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

4

重击while循环和管道:

echo -e "John\nBob\nLucy" | while read n; do echo "hi $n bye"; done
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.