সেড সহ পাঠ্য প্রতিস্থাপন করুন এবং মূল পাঠ্যের অংশ রাখুন


20

আমি রূপান্তর করার চেষ্টা করছি

<id>1</id>
<Name>ENTERPRISE RESOURCE PLANNING</Name>

প্রতি:

<column name="id">1</column>
<column name="Name">ENTERPRISE RESOURCE PLANNING</column>

আমি ধরে নিচ্ছি যে কাজের জন্য সর্বোত্তম সরঞ্জামটি হবে sedতবে আমি কীভাবে মূল পাঠ্যের অংশগুলি প্রতিস্থাপনের অংশে রাখব তা আমি বুঝতে পারি না।

যদি আমি করি:

$ sed -i 's/<.*>.*<.*>/<column name="\\1">\\2<\/column>/g' filename.xml

আউটপুটটি হ'ল:

<column name="\1">\2</column>
<column name="\1">\2</column>

বা এর মধ্যে থেকে একই কাজ করা vi, এটি আউটপুট করে:

<column name=""></column>
<column name=""></column>

আমি কীভাবে এটি তৈরি করতে পারি \1এবং \2তাদের মূল মানগুলিতে ফিরে যেতে পারি?

উত্তর:


21

আপনি গ্রুপগুলি ব্যবহার করতে পারেন, যেমন:

$ sed -i 's/<\(.*\)>\(.*\)<.*>/<column name="\1">\2<\/column>/g' filename.xml

আরইএস সম্পর্কে সম্ভবত সবচেয়ে বিভ্রান্তিমূলক অংশটি হ'ল বিভিন্ন সিনট্যাকটিক স্বাদ।

উদাহরণস্বরূপ সেড এবং ভিম বেসিক নিয়মিত এক্সপ্রেশনগুলি ব্যবহার করুন যেখানে ()তাদের মেটা-অর্থ পেতে আপনাকে উদ্ধৃতি দিতে হবে।

সঙ্গে বাড়ানো রেগুলার এক্সপ্রেশনের (যেমন awk, egrep এবং কম) আপনি উদ্ধৃত করা আছে ()আক্ষরিক অর্থ জন্য। অন্যান্য মেটা-চরিত্রগুলির জন্য একই রকম পার্থক্য রয়েছে।

বিআরই ()শব্দার্থবিজ্ঞানের পিছনে যুক্তিটি হ'ল যখন আপনার বেশিরভাগ ইনপুট সি-কোড হয় তখন মেটা-ব্যবহারের জন্য প্রথম বন্ধনীর উদ্ধৃতি দেওয়া আরও ব্যবহারিক।


এটি আসলে প্রথম জিনিস আমি চেষ্টা ছিল, কিন্তু আমি রক্ষা পেল না (এবং )অক্ষর। বোকা প্রশ্ন, তবে কেন এটি প্রয়োজনীয়?
মাইক 19

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