দ্বিতীয় কলাম পেতে AWK ব্যবহার করা


9

আমি দ্বিতীয় কলামের ডেটা পাওয়ার জন্য awk কমান্ড পাব বলে মনে হচ্ছে না।

বাশ কোড:

filter_data=$(awk "{if(/$filter:/) print $2}" < scanresults_temp.txt)

printf  "$filter_data \n"

$ ফিল্টার ভেরিয়েবলটি হয় ডাউনলোড বা আপলোডের মান যা শেল স্ক্রিপ্টে পাস হয়। সুতরাং ডাব্লু যথাযথ সারিটি অনুসন্ধান করতে ডাউনলোড বা আপলোড শব্দটি ব্যবহার করে।

ফাইলের সামগ্রীগুলি হ'ল:

Testing download speed................................................................................
Download: 51.13 Mbit/s
Testing upload speed................................................................................................
Upload: 57.38 Mbit/s

আমি কেবল সংখ্যাগুলি পাওয়ার চেষ্টা করছি এবং অন্য কিছু নয়, প্রাক্তন, 51.13এবং 57.38


2
আপনি যদি এখনই এটি মুদ্রণ করছেন তবে কেন এটি পরিবর্তনশীলটিতে সংরক্ষণ করবেন? শুধু ব্যবহার awk'sprintf
Sergiy Kolodyazhnyy

উত্তর:


13

অ্যাডাব্লু প্রোগ্রামের মূল অংশের জন্য আপনাকে একক উদ্ধৃতি ব্যবহার করতে হবে যাতে খোলার মাধ্যমে ভেরিয়েবলের ভেরিয়েবলগুলি প্রসারিত হয় না। এখানে কীভাবে আপনার শেল ভেরিয়েবলটি অজকে রূপান্তর করা উচিত:

filter_data=$( awk -v re="$filter:" '$0 ~ re {print $2}' scanresults_temp.txt )

7

বিকল্প উপায় হ'ল awkশিগলটিকে পরিবেশের ক্ষেত্রে অস্থায়ী (অস্থায়ী) মাধ্যমে পরিবেশে পরিবর্তন করতে দেওয়া :

re=$filter  awk  '$0 ~ ENVIRON["re"] {print $2}'  input.txt

নোট করুন যে শেলটিতে অ্যাসাইনমেন্ট সম্পাদন করার সময় ভেরিয়েবল উদ্ধৃতি প্রয়োজন হয় না

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