একটি শব্দ খুঁজে পেতে ব্যাচ ফাইল, শব্দের উপরে 2 লাইনটি বের করুন এবং এটি বিভিন্ন পাঠ্য ফাইলে লিখুন


0

আমার দৃশ্যে আমার XXX.txt" স্পট " শব্দটির জন্য আমার ফাইল ( ) পরীক্ষা করা দরকার । ফাইলে কিছু স্পট শব্দ থাকবে।

একটি নতুন লেখায় সূক্ষ্মভাবে " এসপট " শব্দের শীর্ষ 2 লাইনটি লিখতে আমার স্ক্রিপ্ট দরকার এবং এটির নামকরণ করুন " done.txt"।

EXAMPLE টি XXX.txt

dfsfs
clip_id HDX
title Setiap hari
type PROMO
end
clip_id HDQ
title Citra
type SPOT
end
clip_id HDX
title Ri
type PROMO
end
clip_id HDX
title sni
type SPOT

সুতরাং done.txtনীচের মত আমার " " লেখার দরকার আছে ।

clip_id HDQ
title Citra

clip_id HDX
title sni

এটি করার জন্য স্ক্রিপ্টের জন্য পরামর্শ দিন।

অনেক ধন্যবাদ


সুপার ব্যবহারকারীকে স্বাগতম দুর্ভাগ্যক্রমে, আমরা কোনও কোড লেখার পরিষেবা নই। কোনও নির্দিষ্ট কাজ সম্পাদন করার জন্য কেবল কোড জিজ্ঞাসা করার পরিবর্তে, দয়া করে আমাদের এখন পর্যন্ত কী চেষ্টা করেছেন তা আমাদের জানান (আপনার বর্তমানে থাকা কোনও কোড সহ) এবং যেখানে আপনি আটকে আছেন যাতে আপনার নির্দিষ্ট সমস্যার সাথে আমরা আপনাকে সহায়তা করতে পারি। যে
কোডগুলি

একটি খাঁটি সিএলআই .batসমাধানের জন্য, আপনি findstr /n /i "spot" "xxx.txt"কমান্ড থেকে findstr /n /R $ "xxx.txt"এবং আউটপুট তুলনা করে শুরু করতে পারেন এবং তারপরে দুটি নেস্ট FOR /F লুপ কমান্ডে এটি ব্যবহার করতে পারেন । @ ডেভিডপস্টিল মন্তব্য মন্তব্যের ইঙ্গিত অনুসরণ করে এখানে ফিরে আসতে এবং নিখরচায় আপনার প্রশ্নটি সম্পাদন করুন।
জোসেফজেড

উত্তর:


0

মাইক্রোসফ্টের সেমিডি উত্তরসূরী পাওয়ারশেলের সমাধান এখানে রয়েছে:

# variables that you need to set
$source = "C:\temp\superuser.txt"
$destination = "C:\temp\done.txt"

#region easier to understand for PS newcomers
$hits = select-string -Path $source -SimpleMatch "SPOT" -CaseSensitive
$filecontents = get-content $source

foreach($hit in $hits)
{
    $filecontents[$hit.linenumber-3] | out-file -append $destination
    $filecontents[$hit.linenumber-2] | out-file -append $destination
    "" | out-file -append $destination
}
#endregion


#region shorter version
$hits = select-string -Path $file -SimpleMatch "SPOT" -CaseSensitive -context 2

foreach($hit in $hits)
{
    $hit.context.PreContext | out-file -append $destination
    "" | out-file -append $destination
}
#endregion

হাই মেগামরফ আপনাকে কোডিংয়ের জন্য ধন্যবাদ জানায়। তবে আমি কি এটি .bat বা .ps1 ফাইল হিসাবে সংরক্ষণ করব? আমি একজন নবাগত এবং .বাট হিসাবে চালানো হলে আমি যে কোনও আউটপুট দেখতে পেয়েছি ... দয়া করে আমাকে আলোকিত করুন .. অনেক ধন্যবাদ!
পুবলান

স্ক্রিপ্টটি .ps1 হিসাবে সংরক্ষণ করুন, আপনি এটিকে পাওয়ারশেল থেকে কেবল স্ক্রিপ্টের পাথে প্রবেশ করে চালাতে পারেন বা ব্যাচের মাধ্যমে এটি চালাতে পারেন: পাওয়ারশেল-এক্সেকিউশনপলিসি বাইপাস সি: \ টেম্পি \ myscript.ps1
মেগামারফ

উইন্ডোজ পাওয়ারশেল কপিরাইট (সি) ২০০৯ মাইক্রোসফ্ট কর্পোরেশন। সর্বস্বত্ব সংরক্ষিত. পিএস সি: \ ব্যবহারকারীগণ \ পাম্পুবা \ ডেস্কটপ \ স্পট বাণিজ্যিক> পরীক্ষা 4 'টেস্ট 4' শব্দটি একটি সেমিডলেট, ফাংশন, স্ক্রিপ্ট ফাই লে বা অপারেবল প্রোগ্রামের নাম হিসাবে স্বীকৃত নয়। নামের বানানটি পরীক্ষা করুন, বা যদি কোনও পথটি অন্তর্ভুক্ত করা হয়েছিল, তবে পাথটি সঠিক কিনা তা যাচাই করুন এবং আবার চেষ্টা করুন। লাইনে: 1 চর: 6 + টেস্ট 4 <<<< + বিভাগে তথ্য: অবজেক্ট নটফাউন্ড: (টেস্ট 4: স্ট্রিং) [], কমান্ড নটফৌ + এক্সপ্লেশন + ফুললিউলিফাইড এরিরিডআইডি: কমান্ডনটফাউন্ডএক্সেপশন পিএস সি: \ ব্যবহারকারীগণ mp -> এটি আউটপুট :(
পুবালান

আমি ধরে নিলাম আপনার স্ক্রিপ্টটি টেস্ট 4 বলে? এটি এটিকে কল করুন \ test4.ps1 পাওয়ারশেল আপনাকে স্ক্রিপ্টগুলি বা বাইনারিগুলির ফাইলের প্রসার এবং সুরক্ষার কারণে কোনও আপেক্ষিক বা পরম পথ দিয়ে রেফারেন্স প্রত্যাশা করে। কেউ একই ডিরেক্টরিতে কেবল একটি দূষিত পরীক্ষা4.exe স্থাপন করতে পারে এবং যদি সেই সুরক্ষা ব্যবস্থা না করা হয় তবে এটি পরিবর্তে বলা হবে।
মেগামরফ

হ্যাঁ এটি কার্যকর করা যায় না কারণ কিছু সুরক্ষা নীতি ... .bat হিসাবে একই স্ক্রিপ্ট সংরক্ষণ করতে পারে? যদি না..কোন জায়গায় আমার পরিবর্তন করা উচিত .... লক্ষ লক্ষ ধন্যবাদ
পুবালান

0

আমি জেআরপিএল.ব্যাটকে উচ্চতর প্রস্তাব দিচ্ছি - একটি হাইব্রিড জেএসক্রিপ্ট / ব্যাচ ইউটিলিটি যা নিয়মিত প্রকাশের পাঠ্য প্রতিস্থাপন সম্পাদন করে । জেআরএইপিএল.ব্যাট খাঁটি স্ক্রিপ্ট যা এক্সপি থেকে পরবর্তী কোনও উইন্ডোজ প্ল্যাটফর্মে নেটিভভাবে চালিত হয়।

ধরে নিই JREPL.BAT আপনার বর্তমান ডিরেক্টরিতে রয়েছে, বা আরও ভাল আপনার প্যাথের মধ্যে কোথাও, তখন একটি সাধারণ কমান্ড লাইন ওয়ান-লাইনার দক্ষতার সাথে আপনার সমস্যা সমাধান করে:

jrepl "^((.*\n){2})type SPOT$" $1 /m /jmatch /f xxx.txt /o done.txt
  • /Mএকাধিক লাইন বিকল্প অনুসন্ধান যাদের জুড়ে নতুন লাইন দেয়।
  • /JMatchবিকল্পটি কেবল ম্যাচের জন্য প্রতিস্থাপনের স্ট্রিংগুলি মুদ্রণ করে

যেহেতু জেআরপিএল একটি ব্যাচের স্ক্রিপ্ট, সুতরাং আপনি যদি অন্য স্ক্রিপ্টের মধ্যে এটি ব্যবহার করেন তবে অবশ্যই জেআরইপিএল কল করুন।

কমান্ড লাইন ব্যবহার করে সম্পূর্ণ ডকুমেন্টেশন উপলব্ধ jrepl /?। আপনি jrepl /?|moreএকবারে সাহায্যের একটি পৃষ্ঠা দেখতে ব্যবহার করতে পারেন। আমি কখনও বেশি ব্যবহার করি না কেননা আমার সেমিডি.এক্সই কনসোল উইন্ডোটি একটি বৃহত আউটপুট বাফারের সাথে কনফিগার করা হয়েছে যা অতীত আউটপুট দেখতে আমাকে স্ক্রোল আপ করতে সক্ষম করে।


হাই..এটি আমি কী করেছি .. তবে ব্যর্থ হয়েছে .. @ প্রতিধ্বনি সেটলোকাল সক্ষমডলেডেএডেক্স্পেনশন সেট এসসিআর = সি: \ ব্যবহারকারীদের mp পিএমপিওবা \ ডেস্কটপ \ পিজিএম \ xxx.txt সেট ডিএসটি = সি: \ ব্যবহারকারী \ পিম্পুবা \ ডেস্কটপ \ পিজিএম \ done.txt jrepl "^ ((। * \ n) {2}) স্পট টাইপ করুন $" $ 1 / এম / জ্যাম্যাচ / এফ% এসসিআর% / ও% ডিএসটি%) বিরতি দিন
পুবলান

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