স্ট্রিং ভেরিয়েবলে নবম শব্দ


87

বাশ-এ, আমি একটি ভেরিয়েবল দ্বারা স্ট্রিংয়ের Nth শব্দটি পেতে চাই।

এই ক্ষেত্রে:

STRING="one two three four"
N=3

ফলাফল:

"three"

বাশ কমান্ড / স্ক্রিপ্ট এটি কি করতে পারে?

উত্তর:


99
echo $STRING | cut -d " " -f $N

4
অস্তিত্ব নেই এমন ক্ষেত্রের অনুরোধ করার সময় কাটা ব্যর্থ হবে। "" ফেরার পরিবর্তে এটি স্ট্রিংটি নিজেই ফিরে আসবে। উদাহরণ: প্রতিধ্বনি "aaaa" | কাটা -২২ ফলাফলটি "আআআএ", শূন্য দৈর্ঘ্যের ফলাফল নয়।
আজাস্কেল

@જાাস্কেল যখন ডিলিমিটারটি ইনপুটটিতে পাওয়া যায় না তখন এটি ঘটতে পারে বলে মনে হয় । এবং সেই আচরণটি আজকাল - কেবলমাত্র-সীমাবদ্ধ বিকল্প ব্যবহার করে পরিবর্তিত হতে পারে।
সামুলি পাহাজা

64

একটি বিকল্প

N=3
STRING="one two three four"

arr=($STRING)
echo ${arr[N-1]}

4
এর জন্য বাশ অ্যারেগুলি ব্যবহার করা "সেরা" সমাধান, আমি জঞ্জাল বা সিড ব্যবহার করা ঘৃণা করি, কারণ আমি সেগুলি সমস্ত সেটআপগুলিতে বিশেষত এমএসএসি সেটআপে ইনস্টলড দেখতে পাই না।
সুন্দর

4
যদিও প্রতিধ্বনি "প্রয়োজনীয় নয়", তবুও আমি এটির উপাদানগুলি কীভাবে ব্যবহার করব তা বোঝার জন্য এটি দরকারী বলে মনে করি। ধন্যবাদ
চেন লি

4
যদি আপনি IFS(আভ্যন্তরীণ ক্ষেত্র বিভাজক) ':' বা সাদা জায়গার পরিবর্তে কিছু সেট করে রেখেছেন তবে এটি চেষ্টা করার আগে এটি আবার পরিবর্তন করুন।
নুমেনন

4
এটি সঠিক উত্তর হওয়া উচিত। এই উদ্দেশ্যে অ্যারে ব্যবহার করা সহজ এবং চতুর উভয়।
আজাস্কেল

32

ব্যবহার awk

echo $STRING | awk -v N=$N '{print $N}'

পরীক্ষা

% N=3
% STRING="one two three four"
% echo $STRING | awk -v N=$N '{print $N}'
three

9

কিছু বিবৃতি সম্বলিত একটি ফাইল:

cat test.txt

ফলাফল :

This is the 1st Statement
This is the 2nd Statement
This is the 3rd Statement
This is the 4th Statement
This is the 5th Statement

সুতরাং, এই বিবৃতিটির চতুর্থ শব্দটি মুদ্রণ করতে টাইপ করুন:

cat test.txt |awk '{print $4}'

আউটপুট:

1st
2nd
3rd
4th
5th

4
ওপি বলে যে স্ট্রিংটি একটি ফাইলের পরিবর্তে চলকতে থাকে।
কোডফোরস্টার

3

কোনও ব্যয়বহুল কাঁটাচামচ নেই, পাইপ নেই, বাশিজম নেই:

$ set -- $STRING
$ eval echo \${$N}
three

তবে গ্লোববিং থেকে সাবধান থাকুন।


2
STRING=(one two three four)
echo "${STRING[n]}"

4
উদাহরণস্বরূপ, STRING কি আসলেই একটি স্ট্রিং? এটি একটি অ্যারের মতো দেখাচ্ছে।
নিকোলাস রাউল

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