আমি cat
ইউনিক্সের কমান্ডের কার্যকারিতাটি প্রতিলিপি করার চেষ্টা করছি ।
আমি সমাধানগুলি এড়াতে চাই যেখানে আমি উভয় ফাইল স্পষ্টভাবে ভেরিয়েবলগুলিতে পড়ি, ভেরিয়েবলগুলি এক সাথে যুক্ত করে এবং তারপরে সংক্ষিপ্ত ভেরিয়েবলটি লিখি।
আমি cat
ইউনিক্সের কমান্ডের কার্যকারিতাটি প্রতিলিপি করার চেষ্টা করছি ।
আমি সমাধানগুলি এড়াতে চাই যেখানে আমি উভয় ফাইল স্পষ্টভাবে ভেরিয়েবলগুলিতে পড়ি, ভেরিয়েবলগুলি এক সাথে যুক্ত করে এবং তারপরে সংক্ষিপ্ত ভেরিয়েবলটি লিখি।
উত্তর:
আপনি সহজভাবে ব্যবহার করতে পারেন cat example1.txt, example2.txt | sc examples.txt
। আপনি অবশ্যই এই স্টাইলটি সহ দুটিরও বেশি ফাইলকে অবশ্যই দৃaten় করতে পারেন। এছাড়াও, যদি ফাইলগুলির নাম একইভাবে দেওয়া হয় তবে আপনি ব্যবহার করতে পারেন:
cat example*.txt | sc allexamples.txt
cat
জন্য একটি alias হয় Get-Content
, এবং sc
জন্য একটি alias হয় Set-Content
।
দ্রষ্টব্য 1 : পরবর্তী পদ্ধতিটি সম্পর্কে সতর্কতা অবলম্বন করুন - আপনি যদি আউটপুট দেওয়ার চেষ্টা করেন examples.txt
(বা প্যাটার্নের সাথে মিলে যায় এমন), পাওয়ারশেল একটি অসীম লুপে যাবে! (আমি কেবল এটি পরীক্ষা করেছি)।
দ্রষ্টব্য 2 : একটি ফাইলের আউটপুটিং >
অক্ষর এনকোডিং সংরক্ষণ করে না! এজন্য Set-Content
( sc
) ব্যবহারের পরামর্শ দেওয়া হচ্ছে।
Set-Content
জাতীয় কোড পৃষ্ঠা ব্যবহার করা হয় (উদাহরণস্বরূপ ইংরাজির জন্য উইন্ডোজ -১২২২) যদি উত্স ফাইলগুলিতে অন্য কোডিং থাকে (যেমন উইন্ডোজ -১৫১১ বা ইউটিএফ ৮), আপনার অবশ্যই সঠিক এনকোডিং সেট করতে হবে sc file.txt -Encoding UTF8
(যেমন রাশিয়ার জন্য 1251 নম্বরগুলি v6.2-এর পরে সমর্থিত)
Add-Content
হ'ল আপনি যদি কমান্ডটি দু'বার চালনা করেন তবে একত্রিত ফাইল দ্বিগুণ হয়ে যায়। একটি ভাল প্রতিস্থাপন হয় Out-File
। এখানে
Get-Content my.bin -Raw | Set-Content my.bin -NoNewline
কোনও পরিবর্তন হবে না my.bin
। -Raw
যে কোনও সিআর / এলএফ বাইট সংরক্ষণ করে, যখন -NoNewline
পাওয়ারশেলকে তার নিজস্ব সিআর / এলএফ বাইট যুক্ত করতে বাধা দেয়।
ব্যবহার করবেন না >
; এটি চরিত্রের এনকোডিংটিকে বিভ্রান্ত করে। ব্যবহার করুন:
Get-Content files.* | Set-Content newfile.file
cat
জন্য একটি উপনাম Get-Content
।
ÿþ
যা FF FE
আমার যোগসূত্র ফাইলের শুরুতে যখন ব্যবহার >
।
ইন cmd
, আপনি এটি করতে পারেন:
copy one.txt+two.txt+three.txt four.txt
পাওয়ারশেলের মধ্যে এটি হবে:
cmd /c copy one.txt+two.txt+three.txt four.txt
পাওয়ারশেল উপায়ে জিসি ব্যবহার করা হবে, উপরেরটি খুব দ্রুত হবে, বিশেষত বড় ফাইলগুলির জন্য। এবং এটি অ- এসকিআইআই ফাইলগুলিতেও /B
স্যুইচটি ব্যবহার করে ব্যবহার করা যেতে পারে।
আপনি অ্যাড-কন্টেন্ট সেমিডলেট ব্যবহার করতে পারেন । সম্ভবত এটি অন্যান্য সমাধানগুলির তুলনায় কিছুটা দ্রুত।
gc .\file2.txt| Add-Content -Path .\file1.txt
gc
বোঝায়?
gc
গেট-কনটেন্ট
কমান্ড প্রম্পটে ফাইলগুলি সংহত করার জন্য এটি হবে
type file1.txt file2.txt file3.txt > files.txt
পাওয়ারশেল type
কমান্ডকে রূপান্তরিত করে Get-Content
যার অর্থ type
পাওয়ারশেলের কমান্ডটি ব্যবহার করার সময় আপনি একটি ত্রুটি পাবেন কারণ Get-Content
কমান্ডটি ফাইলগুলি পৃথক করার জন্য একটি কমা প্রয়োজন। পাওয়ারশেলের একই কমান্ড হবে
Get-Content file1.txt,file2.txt,file3.txt | Set-Content files.txt
আমি ব্যবহার করতাম:
Get-Content c:\FileToAppend_*.log | Out-File -FilePath C:\DestinationFile.log
-Encoding ASCII -Append
এটা জরিমানা। আমি নোটপ্যাড ++ স্পষ্টভাবে এনকোডিং ছাড়াই নুল অক্ষরগুলি অপসারণ করতে ASCII এনকোডিং যুক্ত করেছি।
আপনি যেমন কিছু করতে পারেন:
get-content input_file1 > output_file
get-content input_file2 >> output_file
>
"আউট-ফাইল" এর জন্য একটি এলিফ কোথায় এবং >> "আউট-ফাইল-অ্যাপেন্ড" এর একটি নাম alias
যেহেতু অন্যান্য উত্তরগুলির বেশিরভাগগুলি প্রায়শই ফর্ম্যাটিংটি ভুল (পাইপিংয়ের কারণে) পায় তাই সবচেয়ে নিরাপদ কাজটি নিম্নরূপ:
add-content $YourMasterFile -value (get-content $SomeAdditionalFile)
আমি জানি যে আপনি $ সামাআডিশনালফিলের সামগ্রীটি একটি পরিবর্তনশীল হিসাবে পড়া এড়াতে চেয়েছিলেন, তবে উদাহরণস্বরূপ আপনার নিউলাইন বিন্যাসটি সংরক্ষণ করার জন্য আমি মনে করি না এটি করার উপযুক্ত উপায় নেই।
একটি workaround আপনার $ আপনারমাস্টার ফাইলে লাইন এবং পাইপ দ্বারা আপনার $ SomeAdditionalFile লাইন মাধ্যমে লুপ করা হবে। তবে এটি অত্যধিক সংস্থান নিবিড়।