बैश कमांड पाइपलाइन में आउटपुट कैसे संशोधित करें


10

उदाहरण के लिए, मुझे कुछ पंक्तियों की कमान मिली

$ some-command
John
Bob
Lucy

अब मैं chaining कमांड जोड़ना चाहूंगा, जो आउटपुट को संशोधित करता है।

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

कैसे लिखें other-command? (मैं बकवास में एक नौसिखिया हूँ)

जवाबों:


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

@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 Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.