একটি নির্দিষ্ট ডিরেক্টরিতে পৃথক ফাইলগুলিতে awk আউটপুটটি পরিচালনা করতে আমার সমস্যা হচ্ছে। আমি কাজটি ডিরেক্টরিতে সফলভাবে এটির পাশাপাশি শেষ পর্যন্ত একটি এমভি কমান্ডের শৃঙ্খলাবদ্ধ করতে পারি, তবে আমি কেবলমাত্র awk
নির্দিষ্ট ডিরেক্টরিতে ফাইলগুলি সংরক্ষণ করতে ব্যবহার করতে সক্ষম হতে চাই ।
রেফারেন্সের জন্য, এখানে একটি সরলীকৃত messages.txt
যা আমি পৃথক বার্তা ফাইলে বিভক্ত করতে চাই:
messageHeader:
mh_field1: mh_val1
mh_field2: mh_val2
messageData:
md_field1: md_val1
md_field2: md_val2
messageHeader:
mh_field1: mh_val1
mh_field2: mh_val2
messageData:
md_field1: md_val1
md_field2: md_val2
messageHeader:
mh_field1: mh_val1
mh_field2: mh_val2
messageData:
md_field1: md_val1
md_field2: md_val2
আমি বার্তাগুলি ফাইলটিকে সাফল্যের সাথে পৃথক বার্তায় বিভক্ত করতে সক্ষম হয়েছি এবং প্রতিটিটিকে ওয়ার্কিং ডিরেক্টরিতে আলাদা ডিরেক্টরিতে আউটপুট করে এটি ব্যবহার করে:
awk -v RS= '{print > ("message" NR ".txt")}'
যা তৈরি করে message1.txt
, message2.txt
এবং message3.txt
কার্যক্ষম ডিরেক্টরিতে। mv
আউটপুটকে একটি নির্দিষ্ট ডিরেক্টরিতে স্থানান্তর করতে আমি এই বুনিয়াদি কমান্ডের শেষে একটি কমান্ডও শৃঙ্খল করতে পারি :
out = "$(pwd)/messages"
mkdir -p $out
awk -v RS= '{print > ("message" NR ".txt")}' && mv message*.txt $out
যা সৃষ্টি করে message1.txt
, message2.txt
এবং message3.txt
ভিতরে ./messages
। যাইহোক, আমি কিভাবে শুধুমাত্র ব্যবহার করে একটি নির্দিষ্ট ডিরেক্টরিতে পৃথক বার্তা ফাইলগুলি সংরক্ষণ করতে চিন্তা করার সক্ষম হয়েছে না awk
।
উদাহরণস্বরূপ, আমি বার্তা ফাইল এবং পৃথক বার্তাগুলিকে একটি নির্দিষ্ট আউটপুট ডিরেক্টরিতে আউটপুট করার চেষ্টা করেছি:
out="$(pwd)/messages"
mkdir -p $out
awk -v RS= '{print > ($out "message" NR ".txt")}' messages.txt
নিম্নলিখিত ত্রুটির ফলাফল যা:
awk: cmd. line:1: (FILENAME=- FNR=1) fatal: can't redirect to 'messageHeader:
mh_field1: mh_val1
mh_field2: mh_val2
messageData:
md_field1: md_val1
md_field2: md_val2message1.txt' (file name too long)
আমি নিম্নলিখিত সম্পর্কিত প্রশ্নটি পেয়েছি " awk ব্যবহার করে ফাইলগুলি বিভক্ত করুন এবং অন্য ডিরেক্টরিতে ফলাফল উত্পন্ন করুন " তবে এখনও সঠিক বাক্যবিন্যাস পেতে সক্ষম হননি।
out="$(pwd)/messages"
mkdir -p $out
awk -v RS= path=$out '{f=path "message" NR ".txt"; print > f}' messages.txt
awk: fatal: cannot open file `{f=path "message" NR ".txt"; print > f}' for reading (No such file or directory)
out = "$(pwd)/messages"
? এটি আপনাকে একটি ত্রুটি বার্তা দিয়েছে?
-v
আগে মিস করছি path=$out
।
out
সেই কোড ব্লকটিতে সংজ্ঞায়িত ছিলাম না এবং তৈরি এবং ত্রুটিটি যখন আমি সম্পূর্ণরূপে এটি যুক্ত করার চেষ্টা করছিলাম।
-v
আমার মনে করছেন ...awk -v RS= -v path="$out"