বাশ কমান্ড পাইপলাইনে আউটপুট কীভাবে পরিবর্তন করা যায়


10

উদাহরণস্বরূপ, আমি কিছু কমান্ড থেকে কিছু লাইন পেয়েছি

$ some-command
John
Bob
Lucy

এখন আমি চেইনিং কমান্ড যুক্ত করতে চাই যা আউটপুটকে পরিবর্তন করে।

$ 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 - বোধ করা হয় নি 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
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.