k with সহ অ্যাজক এবং রেইজেক্স


0

আমি পুরো রেকর্ডটি মুদ্রণ করতে চাই যাতে এতে শব্দ এবং কিছু অক্ষর থাকে যা areচ্ছিক। লিপি:

/mount[ein]{0,2}/{
print $0}

দুর্ভাগ্যক্রমে এটি কাজ করে না। "{" এবং "}" ছাড়া এটি কাজ করে। আমি "for" befor "{" দিয়ে চেষ্টা করেছি:

/mount[ein]\{0,2\}/{
    print $0}

অন্য উদাহরণ। ফাইলের জন্য:

mountx
mounte
mountee
mounteee

awk:

awk '/mount[ein]{0,2}$/' file

এবং ফলাফল:

// কিছুই

সিস্টেম: ডেবিয়ান 7.8 লিনাক্স আইবিএম 3.2.0-4-এএমডি 64 # 1 এসএমপি ডেবিয়ান 3.2.68-1 + deb7u1 x86_64 জিএনইউ / লিনাক্স


আপনার ইনপুট এবং পছন্দসই আউটপুট দেখান।
1024

ইনপুট একটি পাঠ্য (বইয়ের অংশ)। আমি কেবল জানতে চাইছি কেন রেজেক্স কাজ করে না। Aw Are এজেড-এ কাজ করে না।
ডিয়েগো 9403

1
আপনি কি বিশ্বাস করেন যে রেজেক্স কাজ করে না? ইনপুট, প্রত্যাশিত আউটপুট এবং প্রকৃত আউটপুট না বলেই অনুমান করা আমাদের পক্ষে কঠিন।
jlliagre

উত্তর:


0

আপনার নিয়মিত প্রকাশটি একটি পসিক্স অনুগত awkএবং জিএনইউ উভয়ের সাথেই কাজ করে awk

আসলে দেওয়া অক্ষর e, iএবং nশূন্য থেকে তিন বার থেকে উপস্থিত থাকতে হবে কিন্তু আর কোনো বাধ্যতা আছে, এই অংশ প্যাটার্ন থেকে সরানো হতে পারে mountকিছু অথবা কিছুই যাহাই হউক না কেন মেলে না করে। অ্যাকশন ( print $0) এছাড়াও ডিফল্ট হিসাবে নির্দিষ্ট হওয়া দরকার।

আপনার আদেশটি তখন এতে সরল করা যেতে পারে:

awk '/mount/'

আপনি যদি এই ব্যাপ্তিটি ব্যবহার করতে চান তবে আপনাকে তার পরে কিছু নির্দিষ্ট করতে হবে, এখানে একটি উদাহরণ রয়েছে:

$ cat input
foo
mountx
mounte
mountee
mounteee
$ /usr/xpg4/bin/awk '/mount[ein]{0,2}$/' input
mounte
mountee

এটি সোলারিতে যেখানে পসিক্স awkরয়েছে /usr/xpg4/bin

দেবিয়ান ভিত্তিক পুদিনা 17.1 তে একই আচরণ:

$ awk -V | head -1      
GNU Awk 4.0.1
$ awk '/mount[ein]{1,2}$/' input     
mounte
mountee

তবে, দেখে মনে হচ্ছে mawk, যা পসিক্স সম্মতি দাবি করে, অন্তর (ব্রেস) এক্সপ্রেশনটিকে সমর্থন করে না।

$ mawk -W version
mawk 1.3.3 Nov 1996, Copyright (C) Michael D. Brennan
$ mawk '/mount[ein]{1,2}$/' input
$ 

এটি একটি পরিচিত বাগ


আমি আপনার ইনপুট এবং আদেশটি অনুলিপি করেছি, তবে আমার ডেবিয়ানে এটি কার্যকর হয় না। তবে "{}" অ্যাডাব্লিক না করে ফলাফলটি দেখায়, তাহলে আমার ওএসে কিছু ভুল আছে?
ডিয়েগো 9403

আবার, দয়া করে আপনার "কী এটি কাজ করে না" অর্থাত্ আসল কমান্ড রান, এটির ইনপুট, প্রত্যাশিত আউটপুট এবং এর প্রকৃত আউটপুটটির অর্থ কী তা ব্যাখ্যা করুন।
jlliagre

আমি দুঃখিত. আউটপুট এটি আমার সন্দেহ নয়। আমি মনে করি এটি রেইজেক্সের কারণেই, কারণ আমি "{}" ছাড়া অন্য চেষ্টা করি। গতকাল আমি অন্যান্য সিস্টেমে একই স্ক্রিপ্টটি পরীক্ষা করেছি (স্ল্যাকওয়্যার) এবং এটির কাজ, তাই আমি মনে করি আমার ডেবিয়ানের সাথে কিছু ভুল আছে। এমনকি আমি আপনার স্ক্রিপ্টটি অনুলিপি করেছি এবং ডেবিয়ান কিছুই দেখায় নি,
diego9403

দয়া করে অনুরোধ করা বিশদ সহ আপনার প্রশ্নটি সম্পাদনা করুন: আপনি সেই দেবিয়ানে কী কী সংস্করণ চালাচ্ছেন, কোন আদেশ এবং কোন ইনপুট দিয়ে কী আউটপুট পাবেন।
jlliagre

কোনও কিছুর আউটপুট না দেওয়ার আদেশের কারণ ইনপুট লাইনগুলি সিআরএলএফ (উইন্ডোজ স্টাইল) বনাম এলএফ (ইউনিক্স স্টাইল) দিয়ে শেষ করা হতে পারে। চেষ্টা করুনawk '/mount[ein]{1,2}\r$/' input
jalliagre

2

Tst.txt উদাহরণ:

mountx
mounte
mountee
mounteee

awk (GNU Awk 3.1.7) স্ক্রিপ্ট

awk --re-interval '/mount[ein]{0,2}$/' tst.txt > tst1.txt

ফল

mounte
mountee

মানুষ অবাক

-W re-interval
--re-interval
          Enable the use of interval expressions in regular expression matching (see Regular Expressions, below).  Interval expressions were not traditionally available in the AWK
          language.  The POSIX standard added them, to make awk and egrep consistent with each other.  However, their use is likely to break old AWK programs, so  gawk  only  pro-
          vides them if they are requested with this option, or when --posix is specified.

0

আপনার মাউন্ট কমান্ড ফর্ম্যাট সম্পর্কে নিশ্চিত না, এবং প্রশ্নটি আপনার মন্তব্যে কোনও অবতীর্ণ না করে "অ্যাডাব্লু" প্রশ্ন হিসাবে তালিকাবদ্ধ রয়েছে।

এটি কি আপনি খুঁজছেন?

"সমস্ত লাইন মুদ্রণ করুন যেখানে একটি 0 রয়েছে" (বা যে কোনও স্ট্রিং আপনি সন্ধান করছেন) একটি ফাইল থেকে - কমান্ডটি ব্যবহার করুন

cat temp.txt | grep 0 | awk '{print $0}'

ফলাফল হবে

0 9 8 7 6 5 4 3 2

5 4 3 2 1 0 9 8

যেখানে temp.txt হয়

1 2 3 4 5 6 7

0 9 8 7 6 5 4 3 2

9 8 7 6 5 4

8 7 6 5 4 3

7 6 5 4 3

6 5 4 3

5 4 3 2 1 0 9 8

4

3

2


ফলাফল ঠিক আছে, তবে আমাকে পুরোপুরি অ্যাডক স্ক্রিপ্টে লিখতে হবে এবং আমি জানি না কেন "}}" কাজ করে না you আপনি কি জানেন যে আমার রেজেক্স কেন কাজ করে না?
ডিয়েগো 9403

কীভাবে / মাউন্ট [আইন] হয় তা জেনেও না
উইলডাব্লু

"মাউন্ট" <- এটি এই শব্দটি যা ধ্রুবক, তবে অক্ষর আইনের সাথে লাইন থাকতে পারে তবে তা করতে হবে না এবং তিনটি অক্ষর (আইন) শূন্য, এক বা দু'বার পুনরাবৃত্তি করা যায়।
ডিয়েগো 9403
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.