আপনি আপনার প্রশ্নে মন্তব্য হিসাবে, awk
সত্যিই যাওয়ার উপায়। কেভের উত্তরগুলি দেখায় , স্পেসগুলি ফাঁক করে cut
একসাথে ব্যবহার করা সম্ভব ।tr -s
যাইহোক আমাকে ভবিষ্যতের পাঠকদের জন্য সমস্ত সম্ভাব্য সংমিশ্রণটি দিয়ে যেতে দিন। ব্যাখ্যাগুলি টেস্ট বিভাগে রয়েছে।
tr | কাটা
tr -s ' ' < file | cut -d' ' -f4
awk
awk '{print $4}' file
সজোরে আঘাত
while read -r _ _ _ myfield _
do
echo "forth field: $myfield"
done < file
sed
sed -r 's/^([^ ]*[ ]*){3}([^ ]*).*/\2/' file
টেস্ট
এই ফাইলটি দেওয়া হয়েছে, আসুন কমান্ডগুলি পরীক্ষা করুন:
$ cat a
this is line 1 more text
this is line 2 more text
this is line 3 more text
this is line 4 more text
tr | কাটা
$ cut -d' ' -f4 a
is
# it does not show what we want!
$ tr -s ' ' < a | cut -d' ' -f4
1
2 # this makes it!
3
4
$
awk
$ awk '{print $4}' a
1
2
3
4
সজোরে আঘাত
এটি ক্ষেত্রগুলি ক্রমানুসারে পড়ে। ব্যবহার করে _
আমরা ইঙ্গিত দিয়েছি যে এই ক্ষেত্রগুলি উপেক্ষা করার জন্য এটি "জাঙ্ক ভেরিয়েবল" হিসাবে নিক্ষেপযোগ্য ভেরিয়েবল। এইভাবে, আমরা $myfield
ফাইলের মধ্যে 4 র্থ ক্ষেত্র হিসাবে সংরক্ষণ করি, তাদের মধ্যে ফাঁকা স্থান নির্বিশেষে।
$ while read -r _ _ _ a _; do echo "4th field: $a"; done < a
4th field: 1
4th field: 2
4th field: 3
4th field: 4
sed
এই জায়গার তিনটি গ্রুপ এবং কোন শূন্যস্থান ক্যাচ ([^ ]*[ ]*){3}
। তারপরে, এটি 4 র্থ ক্ষেত্র হিসাবে স্পেস পর্যন্ত যা কিছু আসবে তা ধরে রাখে, এটি শেষ পর্যন্ত মুদ্রিত হয় \1
।
$ sed -r 's/^([^ ]*[ ]*){3}([^ ]*).*/\2/' a
1
2
3
4