স্টাডআউটে আউটপুট এবং একই সাথে একটি ফাইলে গ্রেপ করুন


18

আমার কাছে একটি স্ক্রিপ্ট রয়েছে যা পাঠ্যকে আউটপুট করে stdout। আমি আমার টার্মিনালে এই সমস্ত আউটপুট দেখতে চাই এবং একই সাথে আমি কিছু লাইন ফিল্টার করতে এবং সেগুলি একটি ফাইলে সংরক্ষণ করতে চাই। উদাহরণ:

$ myscript
Line A
Line B
Line C

$ myscript | grep -P 'A|C' > out.file

$ cat out.file
Line A
Line C

আমি টার্মিনালে প্রথম কমান্ডের আউটপুট দেখতে এবং একটি ফাইলের মধ্যে দ্বিতীয় কমান্ডের আউটপুট সংরক্ষণ করতে চাই। একই সাথে আমি চেষ্টা করেছি tee, তবে বিপরীত ফলাফলের সাথে কোনও ফলাফল, বা এর চেয়ে ভাল নয়

উত্তর:


27

আমি টার্মিনালে প্রথম কমান্ডের আউটপুট দেখতে এবং একটি ফাইলের মধ্যে দ্বিতীয় কমান্ডের আউটপুট সংরক্ষণ করতে চাই।

আপনি যা দেখছেন তা স্টাডআউট বা স্ট্ডার থেকে আসে না যতক্ষণ না আপনি ততক্ষণ ব্যবহার করতে পারেন tee:

myscript | tee /dev/stderr | grep -P 'A|C' > out.file

লিনাক্সে কাজ করবে; আমি জানি না যে "/ dev / stderr" অন্যান্য * নিক্সেও সমানভাবে প্রযোজ্য কিনা।


9
/dev/stderrসাধারণ. /dev/tty(বর্তমান টার্মিনাল অর্থ) এখানেও কাজ করবে এবং এটি মানক
গিলস'স'-দুষ্ট হওয়া বন্ধ করুন '

@ গিলস: বিস্ময়কর। টার্মিনালে স্ক্রিপ্টের tee /dev/ttyমুদ্রণ stdoutএবং stdinঅন্য কমান্ডের সাথে এটি পাইপ করার জন্য আমার প্রয়োজনীয়তার জন্য আশ্চর্যরূপে পরিবেশন করেছে! Thankees! :-)
জামাদগনি

8
{ ... | tee /dev/fd/3 | grep -e A -e C > out.file; } 3>&1

বা প্রক্রিয়া প্রতিস্থাপনের সাথে (ksh93, zsh বা বাশ):

... | tee >(grep -e A -e C > out.file)

Zsh সহ:

... >&1 > >(grep -e A -e C > out.file)

আমি খুঁজে পেলাম আমাকে প্রথমটি ব্যবহার করতে হয়েছে কারণ এটি গ্রেপের প্রস্থান কোড সংরক্ষণ করে। এছাড়াও, যদি কোনও কারণে আপনি / dev ফাইল সিস্টেমে অ্যাক্সেস করতে না পারেন তবে /dev/fd/3>(cat 1>&3)
এটির

4

এর সাথে এখানে আরও একটি উপায় রয়েছে sed:

myscript | sed '/PATTERN/w out.file'

ডিফল্টরূপে, sedপ্রতিটি লাইন মুদ্রণ করে তাই স্টাডআউট স্টিডিনের সমান হবে (যেমন আপনি myscriptস্ক্রিনের পুরো আউটপুট দেখতে পাবেন )। তদ্ব্যতীত
, সমস্ত লাইন মেলাতে সাজানো PATTERNহবেwout.file


-1

আপনি টি কমান্ডটি কীভাবে ব্যবহার করেছিলেন তা আপনি নির্দিষ্ট করেন নি তবে এটি কাজ করা উচিত:

myscript | grep -P 'A|C' | tee out.file

কমপক্ষে এটি আমার সার্ভারে কয়েক মিনিট আগে কাজ করেছিল ...


4
তবে, আমি যদি ভুল না হয়ে থাকি তবে আপনি পর্দায় যা আছে তা আপনি গ্রেপ করে নিন। আমি স্ক্রিনে সমস্ত আউটপুট দেখতে চাই এবং কেবল ফাইলে যা চলছে তা ফিল্টার করতে চাই।
lorenzo-s
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.