এর সাথে grep -o
, আপনি কী বের করতে চান ঠিক তার সাথে মিলতে হবে। যেহেতু আপনি proto=
স্ট্রিংটি বের করতে চান না , আপনার এটির সাথে মিল পাওয়া উচিত নয়।
একটি বর্ধিত নিয়মিত অভিব্যক্তি যা মিলে যাবে tcp
বা তার udp
পরে স্ল্যাশের সাথে মিলবে এবং কিছু খালি অ্যালফানিউমারিক স্ট্রিং
(tcp|udp)/[[:alnum:]]+
আপনার ডেটাতে এটি প্রয়োগ করা:
$ grep -E -o '(tcp|udp)/[[:alnum:]]+' file
tcp/http
tcp/https
udp/dns
আমরা কেবল স্ট্রিংয়ের সাথে শুরু হওয়া লাইনে এটি করি তা নিশ্চিত করার জন্য proto=
:
grep '^proto=' file | grep -E -o '(tcp|udp)/[[:alnum:]]+'
সঙ্গে sed
প্রথম আগে সবকিছু সরানো, =
এবং প্রথম ফাঁকা অক্ষর পরে:
$ sed 's/^[^=]*=//; s/[[:blank:]].*//' file
tcp/http
tcp/https
udp/dns
স্ট্রিং দিয়ে শুরু হওয়া লাইনে আমরা এটিই করি তা নিশ্চিত করার জন্য proto=
, আপনি grep
উপরের মতো একই প্রাক প্রসেসিং পদক্ষেপটি সন্নিবেশ করতে পারেন, বা আপনি ব্যবহার করতে পারেন
sed -n '/^proto=/{ s/^[^=]*=//; s/[[:blank:]].*//; p; }' file
এখানে, আমরা -n
বিকল্পটি দিয়ে ডিফল্ট আউটপুটটি দমন করি এবং তারপরে লাইনটি মেলে তবেই আমরা বিকল্পগুলি এবং লাইনটির একটি স্পষ্ট প্রিন্ট ট্রিগার করি ^proto=
।
সাথে awk
, ডিফল্ট ক্ষেত্র বিভাজক ব্যবহার করে এবং তারপরে প্রথম ক্ষেত্রটি বিভক্ত করে =
এবং এর দ্বিতীয় বিটটি মুদ্রণ করে:
$ awk '{ split($1, a, "="); print a[2] }' file
tcp/http
tcp/https
udp/dns
স্ট্রিং দিয়ে শুরু হওয়া লাইনে আমরা এটিই করি তা নিশ্চিত করার জন্য proto=
, আপনি grep
উপরের মতো একই প্রাক প্রসেসিং পদক্ষেপটি সন্নিবেশ করতে পারেন, বা আপনি ব্যবহার করতে পারেন
awk '/^proto=/ { split($1, a, "="); print a[2] }' file