বাশ তালিকা থেকে উপাদান পেতে কিভাবে?


40

এখানে একটি তালিকা রয়েছে:

List = "abcd 1234 jvm something"

সমস্ত তালিকাটি লুপ না করে দ্বিতীয় উপাদানটি কীভাবে "1234" পাবেন?

উত্তর:


50

সমান চিহ্নের মধ্যে কোনও স্থান নেই

$ List="abcd 1234 jvm something"
$ set -- $List
$ echo $2
1234

কিছু অন্যান্য উপায়, যদিও শেলের ইন্টার্নালগুলি ব্যবহার করার মতো দক্ষ নয়

$ echo $List | cut -d" " -f2
1234
$  echo $List | awk '{print $2}'
1234
$ echo $List | sed 's/^.[^ \t]* //;s/ .*//'
1234
$ echo $List | tr " " "\n"|sed -n '2p'
1234

ধন্যবাদ। আপনি কোডে কিছু মন্তব্য দিতে দয়া করে?
স্পোনস্ট

1
আমি দ্বিতীয় লাইন মানে।
স্পোনস্ট

17
@Spawn set -- $somethingটুকরা $something$IFSঅবস্থানগত ভেরিয়েবল চরিত্র (ডিফল্ট স্থান দ্বারা) এবং নির্ধারণ বিভক্ত অংশের $1, $2...
বেঞ্জামিন Bannier

43

কেবল ঘোস্টডগের উত্তরটি পরিপূরক করতে: আপনি $Listএর উপাদানগুলিকে একটি অ্যারেতে রেখে সেখান থেকে নির্দিষ্ট তালিকা উপাদানটি অ্যাক্সেস করতে পারেন

List="abcd 1234 jvm something"
arr=($List)
echo ${arr[1]}

দ্রষ্টব্য যে অ্যারে সূচকগুলি 0,1,2, ... গণনা করা হচ্ছে।

এতে অনেকগুলি নতুন ভেরিয়েবলের সাথে শেল পরিবেশ দূষিত না করার সুবিধা রয়েছে।


এটি দুর্দান্ত: :-)
স্প্যানস্টে

1
কোন প্রয়োজন নেই echo: arr=($List)
ব্যবহারকারীর 181894

@ ঘোস্টডগ সম্ভবত বাধ্যতামূলক আচরণ, সম্পাদিত।
বেনজামিন ব্যানিয়ের

@ বেঞ্জামিনব্যানিয়েয়ার, আপনি কীভাবে একাধিক উপাদান নির্বাচন করতে পারেন। Synt {আরার [১,২,৩]} like এর মতো কিছু বাক্য গঠন আছে (এটি নয়, যেহেতু আমি চেষ্টা করেছি, তবে এটির মতো) বা লুপের জন্য আমার কী প্রয়োজন?
কোভোথ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.