উত্তর:
এটি দিয়ে করা যেতে পারে cut
:
cut -d _ -f 1
যেমন
$ echo host100_044 2 | cut -d _ -f 1
host100
এছাড়াও এটি দিয়ে awk
সম্পন্ন করা যেতে পারে awk -F_ '{print $1}'
(সম্ভবত এটি করার একটি পরিষ্কার উপায় আছে)
সেডের জন্য আরেকটি বিকল্প:
echo 'host100_044 2' | sed 's/^\(.*\)_.*$/\1/'
আপনার যদি কোনও ফাইলে থাকে তবে আপনি এটি নীচে কল করতে পারেন;
cat fileName | sed 's/^\(.*\)_.*$/\1/'
echo host100_044 2 host101_045 2 host102_046 2| sed 's/_/ /g' | awk 'BEGIN { RS="host"} {printf("host%s ", $1)}' | cut -d ' ' -f2-
আউটপুট:
host100 host101 host102
নতুন লাইনের সাথে:
echo host100_044 2 host101_045 2 host102_046 2| sed 's/_/ /g' | awk 'BEGIN { RS="host"} $1 ~ /[0-9]/ {print "host"$1}'
আউটপুট:
host100
host101
host102
ব্যবহার sed
:
echo host100_044 2 | sed 's;_.*;;'
sed
স্থান সম্পাদনা বিকল্পে
ব্যবহার করে ,
sed -i.old 's;_.*;;' infile
awk
ইতিমধ্যে একই লিখছিলেন, যদিও সমাধান ইতিমধ্যে পোস্ট করা হয়েছে (এবং cut
সম্ভবত এই ক্ষেত্রে সেরা), যেহেতু তিনি সম্পর্কে জিজ্ঞাসা করেছিলেন sed
, তবে আপনি আমাকে কয়েক সেকেন্ডের সাথে মারধর করেছেন :-)। আপনি এমনকি স্ট্রিপ করতে পারেন $
, যেহেতু এটি .*
ডিফল্টরূপে লাইনের শেষের সাথে মিলবে ।
$ echo "host100_044 2" | awk -F'_' '{print $1}'
host100
-F'_'
নির্দেশ করে awk
ক্ষেত্র বিভেদক রূপে আন্ডারস্কোর ব্যবহার করতে। awk
স্ক্রিপ্ট নিজেই শুধুমাত্র প্রথম ক্ষেত্র ছাপে।
এটি এর আগে আউটপুট প্রিন্ট করবে _
:
sed 's/_.*//' -filename