জাভা সংস্করণগুলির চলমান সংস্করণগুলির জন্য কেবল পথ দেখানোর জন্য আমার একটি গ্রেপের জন্য একটি রেজেেক্স তৈরি করতে সহায়তা প্রয়োজন


-3

আমার কেবল জাভা পাথ ফিরে পেতে পিএস-শেফ থেকে একটি গ্রেপ তৈরি করতে সহায়তা প্রয়োজন।

বলুন যে আমাদের নীচের চলমান প্রক্রিয়া রয়েছে:

bash> ps -ef | grep java
user  pid#      1  1 00:00 ?        00:04:00 /path/to/java/jdk_1.8/bin/java -foo=bar -foo2=bar2 ... etc.

আমি এর থেকে যা ছিল তা প্রদর্শন করা:

bash> ps -ef | grep 'some regex or pattern here'
/path/to/java/jdk_1.8/bin/java

সবাইকে ধন্যবাদ.


উদ্ধৃতি ছাড়াও, আপনার আদেশে কী দোষ হয়েছে?
এএফএইচ

হাই এএফএইচ আমি অতিরিক্ত উদ্ধৃতি ধন্যবাদ দেখছি। সমস্যাটি লুপ নিজেই নয়, সম্ভবত এটি খুব বেশি তথ্য ছিল। আমি যে সমস্ত প্রদর্শন করতে চাই তা হ'ল জাভা চলমান সংস্করণ। আমি কিছু ধরণের গ্রেপ খুঁজছি: গ্রেপ-ও '/ * জাভা' যা জাভা কমান্ডটি কেবল কোনও প্যারামিটার বা অন্যান্য বৈশিষ্ট্য ছাড়াই প্রদর্শন করবে পিএস
ব্যারি

মূলত আপনি একটি ভাল
রেইজেক্স

হ্যাঁ আমি যা খুঁজছি আমি দুঃখিত এই প্রশ্নের জন্য একটি দুর্বল শিরোনাম বেছে নিয়েছি। আমি শিরোনামটি স্থির করেছি এবং আমার সমস্যাটি সহজ করে দিয়েছি,
ব্যারি

এটি কীভাবে grep -oP "/.*?/bin/java" প্রথম ফোরড্ল্যাশ থেকে পাওয়া যায় এটি সন্ধান করবে, তারপরে / বিন / জাভা প্রথম উপস্থিত হওয়া অবধি মিলনের চেষ্টা করুন। রাজধানী পি
গ্রেপ

উত্তর:


-1

এটি কীভাবে grep -oP "/.*?/bin/java"প্রথম ফরোয়ার্ড স্ল্যাশ থেকে যায় এটি খুঁজে পেতে তারপরে / বিন / জাভা এর প্রথম উপস্থিতি পর্যন্ত মিলিয়ে দেখার চেষ্টা করুন। রাজধানী পি গ্রেপ থেকে ভাল রেগেক্স সমর্থন পায়

বা এটি এবং গ্রেপ এমনকি -P প্রয়োজন হয় না। grep -oP "/.*/bin/java"প্রথম ফরোয়ার্ড স্ল্যাশ থেকে শুরু করে তারপরে / বিন / জাভা অন্তর্ভুক্ত হওয়া অবধি যেকোন চরিত্রের সাথে যথাসম্ভব মেলে।

এবং যদি আপনাকে এটিকে স্ক্র্যাচ থেকে নিজেই কাজ করতে হয়, তবে রেজিক্সগুলি সম্পর্কে জানার পাশাপাশি, আপনি প্রতিধ্বনির সাহায্যে জিনিসগুলি খুব দ্রুত পরীক্ষা করতে পারেন উদাহরণস্বরূপ echo user pid# 1 1 00:00 ? 00:04:00 /path/to/java/jdk_1.8/bin/java -foo=bar -foo2=bar2 ... etc. | grepচেষ্টা করুন। আপনি কে-ই-তাই -io এর সাথে মিশ্রিত গ্রেপ এগোরোর সাথে একটি -i যুক্ত করতে পারেন যাতে কেসটিকে সংবেদনশীল করা যায় না (কী -i করে)।

দ্রষ্টব্য- উপরেরটিটি ঠিক আছে তবে আমি কেবল উল্লেখ করতে চাই যে আপনি যদি রেজেক্সস বা প্রযুক্তিগত .*blahবিষয়ে আগ্রহী হন তবে কিছুটা আকর্ষণীয় কারণ কারণ .*(লোভী মূল্যায়ন হয়) একটি ব্লাহকে অন্তর্ভুক্ত করতে পারে তাই আপনার যদি 5 বার ব্লাচ থাকে তবে এটি মিলবে ' বেলা 5 বার। 4 থেকে .*এবং শেষটি বেলা থেকে এখানে .*?blah(অলস মূল্যায়ন) যা প্রথম ব্লাহ পর্যন্ত কোনও চরিত্রের সাথে মেলে। যদিও এটি -পি প্রয়োজন। তবে আপনার ক্ষেত্রে / বিন / জাভা খুঁজছেন, আপনি এক লাইনে একাধিক বার / বিন / জাভা পাচ্ছেন না তাই এটি ছাড়া কোনও বড় বিষয় / সমস্যা নয় .*,?


0

psআপনি চান না এমন প্রচুর তথ্য মুদ্রণ করা আমার কাছে কিছুটা বোকা বলে মনে হচ্ছে , তারপরে grepআপনি যা চান তা নিষ্কাশনের জন্য একটি জটিল এক্সপ্রেশন ব্যবহার করতে হবে । নিম্নলিখিতটি আরও ভাল পদ্ধতির বলে মনে হচ্ছে:

ps -C java -o cmd=

এটি আপনাকে আদেশটি থেকে আর্গুমেন্ট তালিকা দেবে, তবে আপনি sedফিল্টারটি দিয়ে এটি আর্গুমেন্ট 0-তে ছাঁটাই করতে পারেন :

ps -C java -o cmd= | sed 's%\(/java\) .*$%\1%'

যদি প্রায় নিশ্চিতভাবেই হয়, javaপাথের কোনও স্থান নেই, তবে আরও সহজ ফিল্টার ব্যবহার করা যেতে পারে:

ps -C java -o cmd= | sed 's/ .*$//'

(প্রকৃতপক্ষে $বাদ দেওয়া যেতে পারে, কারণ "লোভী" ম্যাচটি শেষ অবধি সমস্ত অক্ষরকে অন্তর্ভুক্ত করবে, যদিও এটি সচেতনতার জন্য সাধারণত অন্তর্ভুক্ত করা হয়))

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