একটি বা লুপ পর্যন্ত, bash মধ্যে "অপসারণ" কন্টেন্ট সঙ্গে একটি লাইন পর্যন্ত। আমি এটা কিভাবে করবো?


1

আমি "রিমুভ" কন্টেন্টের সাথে লাইন না হওয়া পর্যন্ত একটি ফাইলের grep আইপি ঠিকানাগুলি করতে চাই। আমি নিম্নলিখিত জিনিস চেষ্টা কিন্তু স্ক্রিপ্ট "অপসারণ" পরে সহ সমস্ত আইপি দেয়।

a="[A-Z]"

cat *.txt| until [[ "$a" =  "REMOVE" ]]; do grep -oE "([[:digit:]]{1,3}\.){3}[[:digit:]]{1,3}"; done

উত্তর:


1

একটি sed একটি মাছ ধরার নৌকা সঙ্গে এটি করবেন:

sed -n -s -r '1,/REMOVE/ { s/.*(([[:digit:]]{1,3}\.){3}[[:digit:]]{1,3}).*/\1/p }' *.txt

ব্যাখ্যা:

  • -n স্পষ্টভাবে ব্যবহার করা হয়, যদি না লাইন লাইন মুদ্রণ করে তোলে p কমান্ড।
  • -s এক স্ট্রিমে সমস্ত ফাইল একত্রিত করার পরিবর্তে প্রতিটি ফাইল পৃথকভাবে হ্যান্ডেল করে তোলে।
  • -r sed sed ব্যবহার করে বর্ধিত regex সিনট্যাক্স যা কম escaping প্রয়োজন।

মনে রাখবেন যে -s এবং -r জিএনএ এক্সটেনশান হয়। যদি আপনি জানেন না যে gnu এক্সটেনশানটির মানে কি তবে আপনি সম্ভবত gnu sed ব্যবহার করছেন। যদি আপনি একটি gnu sed ব্যবহার না করেন তবে আপনাকে অনুপস্থিত বৈশিষ্ট্যগুলির সমাধান করতে হবে।

আরো ব্যাখ্যা:

  • এসডি স্ক্রিপ্ট 1,/REMOVE/ { commands } লাইন ধারণকারী ইনপুট প্রথম লাইন থেকে কোঁকড়া ধনুর্বন্ধনী ভিতরে কমান্ড কার্যকর করা মানে REMOVE
  • এসডি স্ক্রিপ্ট s/pattern/replacement/p প্যাটার্ন জন্য অনুসন্ধান মানে, প্রতিস্থাপন সঙ্গে প্রতিস্থাপন এবং তারপর যে প্রতিস্থাপন প্রিন্ট।
  • নমুনা .*(([[:digit:]]{1,3}\.){3}[[:digit:]]{1,3}).* একটি প্যাটার্ন যা বিন্দু দ্বারা বিভাজিত চারটি সংখ্যা সংখ্যার একটি শৃঙ্খল ধারণকারী সমস্ত লাইন স্বীকৃতি দেয়। এটি একটি তথাকথিত গ্রুপে চেইন captures।
  • ফিরে রেফারেন্স \1 বন্দী দলের প্রথম উল্লেখ। এর অর্থ হল বাকি লাইনটি বাতিল করা এবং শুধুমাত্র IP ঠিকানা মুদ্রণ করা।

জরিমানা পড়া sed ম্যানুয়াল আরো ব্যাখ্যা জন্য। জরিমানা দেখুন sed টিউটোরিয়াল


ধন্যবাদ, এই প্রায় আমার জন্য কাজ করে। কিন্তু আমার একটি সমস্যা বাকি আছে: স্ক্রিপ্টটি সম্পূর্ণ লাইন দেয় এবং আমার কেবল সেই লাইনের আইপি ঠিকানা দরকার। উদাহরণ: 123 bla ip ঠিকানা bla2
Pheeb

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