অনুসন্ধান এবং ব্যাচ বা পার্ল স্ক্রিপ্ট ব্যবহার করে স্ট্রিং প্রতিস্থাপন


0

আমি কিভাবে "//packages/thirdparty/release/main.txt # 10" অনুসন্ধান করতে এবং # 10 দিয়ে # 10 (VARIABLE = "# 15" সেট করুন) ব্যাবহার কমান্ডগুলি ব্যবহার করে এবং এছাড়াও প্রতিস্থাপন করতে পারি উপেক্ষা স্পেস। # 10 কিছু হতে পারে, আসুন #XXX অনুমান করা যাক। কমান্ড লাইন উদাহরণ পছন্দসই।

testlog.txt

   //packages/thirdparty/release/config.txt                    #8
   //packages/thirdparty/release/config2.txt   #3
   //packages/thirdparty/release/config1.txt    #4
   //packages/thirdparty/release/main.txt            #10

এই আমার চেষ্টা

@ECHO OFF
set $FindStr=//packages/thirdparty/release/main.txt#10
set $ReplString=//packages/thirdparty/release/main.txt#15

setlocal enabledelayedexpansion
for /f "delims=" %%a in ('type testlog.txt') do (
   set $Ver=%%a
   set $Ver=!$Ver: =!
   If /i !$Ver!==%$FindStr% set $Ver=%$ReplString%
   echo !$Ver! ) >> testlog.txt

উইন্ডোজ, একটি কমান্ড ব্যবহার করে একাধিক ফাইল জন্য মৃত্যুদন্ড কার্যকর করা যেতে পারে forfiles কমান্ড। / গুলি বিকল্প recursively ডিরেক্টরি অনুসন্ধান এটি বলে। forfiles /s /m *.txt /c "perl -pi -e s/search-term/replace-term/g @path" বিকল্প @path সঙ্গে /p \path\to\start\search\ বর্তমান ডিরেক্টরি থেকে ভিন্ন পথ থেকে অনুসন্ধান শুরু করতে। সূত্র: stackoverflow.com/questions/5482900/...
karel

উত্তর:


0

আপনি ব্যবহার করতে পারেন REPL.BAT এই কাজ স্ক্রিপ্ট। শুধু এটি সংরক্ষণ করুন এবং এটি ভালো চালান:

 type testlog.txt|repl.bat "#\d\d?$" "#15"

যদি আপনি শুধুমাত্র একটি নির্দিষ্ট সংখ্যাকে প্রতিস্থাপন করতে চান তবে আপনাকে কেবল সামান্য পরিবর্তন দরকার:

 type testlog.txt|repl.bat "#10$" "#15"

যদি আপনি কীভাবে প্রতিস্থাপিত হয় তার উপর আরও নিয়ন্ত্রণ চান তবে তার জন্য আপনি অন্য স্ক্রিপ্টটি ব্যবহার করতে পারেন:

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
COPY /A testlog.txt textlog.out.txt >nul
SET VARIABLE=0
FOR %%S IN ( 1 3 4 8 10 20 ) DO (
    SET /A VARIABLE=!VARIABLE!+1
    COPY /A textlog.out.txt textlog.tmp.txt >nul
    TYPE textlog.tmp.txt|repl.bat "#%%S$" "#!VARIABLE!" > textlog.out.txt
)
DEL textlog.tmp.txt
ENDLOCAL

দ্রুত উত্তর দেওয়ার জন্য ধন্যবাদ .. তবে আমি কেবল "//packages/thirdparty/release/main.txt # 10" এবং # 10 পরিবর্তন করতে চাই। তাই ধরুন # 10 = #XX। এবং # 15 একটি পরিবর্তনশীল থেকে আসে .. আমি% VARIABLE% ব্যবহার করতে পারেন?
Mihir

যে একটু ঠকাই হয়, কারণ এটি বিশুদ্ধ ব্যাচ নয় এবং প্রশ্ন ব্যাচ বলেছে। তা সত্ত্বেও, এটি ব্যাচের রাজা ডেইভ বেনহামের দ্বারা লিখিত হয়, তাই সম্ভবত প্রতিরূপ.এটি একটি বিশেষ সমস্যা হিসাবে পেতে পারে।
barlop

আপনার লিংক থেকে "REPL.BAT জেআরপিএল.এইচটি কর্তৃক সুপারিশ করা হয়েছে, এ উপলব্ধ viewtopic.php চ = 3 এবং;? T = 6044 । আমি আর আরপিএল ব্যাট বজায় রাখছি না। "
DavidPostill

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