বাশ স্ক্রিপ্টে সাদা স্থানের শেষ অবস্থানটি সন্ধান করুন


0

আমি একটি বাশ স্ক্রিপ্ট লিখছি এবং আমি একাধিক স্ট্রিংয়ে হোয়াইটস্পেসের শেষ অবস্থানটি খুঁজে পেতে চাই। আমি কেবল ফাঁকা জায়গা অনুসন্ধান করতে পারি না কারণ এটিতে ট্যাব থাকতে পারে। নীচে আমি অনুসন্ধান করতে পারে লাইন কয়েকটি উদাহরণ দেওয়া আছে।

11:tcp_listen         1.2.3.4:3478
12:tcp_listen              [::1]:3478
13:tcp_listen               [2600:2700:2800:2900:3000:3100:3200:3300]:3478
  • প্রথম লাইন: হোয়াইটস্পেস সমাপ্তির অবস্থান: 21
  • দ্বিতীয় লাইন: সাদা স্থান সমাপ্তি অবস্থান: 26
  • তৃতীয় লাইন: সাদা স্থান সমাপ্তি অবস্থান: 24

আমি প্রতিটি লাইনের মধ্য দিয়ে লুপিং করছি এবং প্রতিটি লাইন ভেরিয়েবল হিসাবে আছি।

উদাহরণ:

line="11:tcp_listen         1.2.3.4:3478"

উত্তর:


1

এই ওয়েব পৃষ্ঠায় মিশ্র স্পেস এবং ট্যাবগুলি আটকে দেওয়ার চেষ্টা করা ব্যর্থ হয়েছে তবে:

$ line="11:tcp_listen         1.2.3.4:3478"
$ shopt -s extglob                                  # important!
$ prefix_with_spaces=${line%%+([^[:space:]])}
$ echo ">$prefix_with_spaces<"
>11:tcp_listen         <
$ echo ${#prefix_with_spaces}
22

আসল ট্যাব দিয়ে এটি ব্যবহার করে দেখুন

$ line=$'11:tcp_listen\t\t1.2.3.4:3478'
$ prefix_with_spaces=${line%%+([^[:space:]])}
$ echo ${#prefix_with_spaces}
15

আমি শেল প্যারামিটার সম্প্রসারণ এবং বর্ধিত নিদর্শন ব্যবহার করছি। বিশদ জন্য ম্যান পৃষ্ঠা দেখুন।

একইভাবে, আপনি যদি শেষের স্থানটি অনুসরণ করে পাঠ্যটি পেতে চান: একই কৌশল, সহজ প্যাটার্ন:

$ line="11:tcp_listen         1.2.3.4:3478"
$ suffix=${line##*[[:space:]]}
$ echo ">$suffix<"
>1.2.3.4:3478<
$ line=$'11:tcp_listen\t\t1.2.3.4:3478'
$ suffix=${line##*[[:space:]]}
$ echo ">$suffix<"
>1.2.3.4:3478<

ধন্যবাদ গ্লেন জ্যাকম্যান, আপনি আমাকে যে প্রত্যয়টির উদাহরণ দিয়েছেন তা নিখুঁতভাবে কাজ করেছে। আমার প্রিফিক্স_ও_স্পেসের উদাহরণ সহ সমস্যা আছে। উপসর্গের মানটি আমার পরীক্ষাগুলিতে সম্পূর্ণ লাইন ভেরিয়েবলের সমান। আমি ": স্পেস:" অনুমান করছি যে আমার সমস্ত ধরণের সাদা স্থানের মতো নয় just এটি আপনার "\ t \ t" উদাহরণ দিয়ে দুর্দান্ত কাজ করেছে। সুতরাং আমি এখনও নিশ্চিত নই যে কীভাবে সাদা স্থানের শেষের অবস্থানটি পাব।
ড্যারিল

1
আমি আপনাকে এই shoptকমান্ডটি দিয়ে প্রসারিত নিদর্শনগুলি সক্ষম করার প্রয়োজনটি মিস করেছি
glenn jackman

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