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"}'

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??)
コジロー14

@kojiro- paste今日は気分がよくなかった、ありがとう8
slm

5

以下のコードは、1行ずつ読み取り、それを変数に格納します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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.