আমি দুটি কনফিগারেশন ফাইলের পার্থক্য করতে পারি?


15

আমি দুটি snmpd.conf ফাইল পেয়েছি, একটি সার্ভারে কাজ করে যা একটি, এবং একটি যা কাজ করে না। অপ্রাসঙ্গিক মন্তব্য এবং নিউলাইনগুলি বাদ দেওয়ার জন্য আমি কীভাবে দুটি কনফিগার ফাইলগুলিতে পার্থক্য করতে পারি?


1
জাল্ডুগার দেখুন! আপনি প্রায় level! =)
জেরেক্সেস

মন্তব্যগুলি ফেলা সত্যিই খারাপ ধারণা, আপনি কীভাবে জানেন যে সেগুলি না দেখে তারা অপ্রাসঙ্গিক?
বেনামে

উত্তর:


15
diff <(grep -v '^#' f1) <(grep -v '^#' f2)

ফাঁকা রেখাগুলি এবং শূন্যস্থান ছাড়া আর কিছুই নেই এমন রেখাগুলি এড়াতে অভিন্ন লিডগুলির সাথে যুক্ত হওয়া শীর্ষস্থানীয় স্পেসগুলির একক পার্থক্য রয়েছে ...

diff -b \
  <(grep -vE '^([ \t]*#|^[ \t]*$)' f1)\
  <(grep -vE '^([ \t]*#|^[ \t]*$)' f2)

যদিও এই মুহুর্তে, আমি সম্ভবত এটি কোনও স্ক্রিপ্টের মধ্যে রেখেছি এবং মূল পরামর্শ হিসাবে এমন কিছু লিখব যা আরও কিছুটা পাঠযোগ্য।


একক-লাইন সমাধান সরবরাহের জন্য +1
wzzrd

হোয়াইটস্পেস যুক্ত লাইনগুলি বাদ দিতে কীভাবে কোনও ধারণা? আপনি মন্তব্যগুলি কেটে ফেলার পরে দেখা যাচ্ছে সেখানে প্রচুর ফাঁকা রেখাগুলি ফাঁক করে রেখেছে।
jldugger

@ জালডুগার, মন্তব্যগুলি এবং সাদা স্থান বাদ দিতে এই রকমটি হতে গ্রেপকে আপডেট করার চেষ্টা করুন। - egrep -v '^ (#। * |) $'
জোড়দাচি

19

আপনার সাথে কিছুটা আরামদায়ক হন তেজ , আমি দৃঢ়ভাবে ব্যবহার করতে উত্সাহিত হবে vimdiff :

vimdiff file1 file2

এটি প্রতিটি পাশের দুটি ফাইল সহ দুটি ফলক সহ একটি ভিম সেশনটি খুলবে। হাইলাইট এবং রঙ ফাইলগুলির মধ্যে পার্থক্য নির্দেশ করবে এবং সমস্ত অভিন্ন অংশগুলি লুকানো থাকবে (ভাঁজযুক্ত, তবে প্রসারণযোগ্য)।

তারপরে, আপনি যদি একটি ফাইল থেকে অন্য ফাইলের মধ্যে নির্বাচনগুলি পৃথকভাবে মার্জ করতে চান তবে আপনি নিম্নলিখিত কমান্ডগুলি ব্যবহার করতে পারেন:

(কার্সারটি হ'ল "বর্তমান ফাইল" হিসাবে বিবেচনা করুন)

File W ^ W এক ফাইলের উইন্ডো থেকে অন্য ফাইলের উইন্ডোতে ফোকাস পরিবর্তন করতে

] সি পার্থক্য সহ পরবর্তী ব্লকে যেতে

[সি পার্থক্য সহ পূর্ববর্তী ব্লকের অনুসন্ধানের বিপরীতে

অন্য ফাইল থেকে বর্তমান ফাইলে পরিবর্তন আনতে do ( d iff o btain) করুন

বর্তমান ফাইল থেকে অন্য ফাইলে পরিবর্তন পাঠাতে dp ( d iff p ut)

নোট: উভয় কি এবং ডিপি কাজ যদি আপনি একটি ব্লক বা একটি ব্লকের মাত্র এক লাইনে আছে।

তোমার দর্শন লগ করা থেকে তোমার দর্শন লগ করা Ndo

zo to টেক্সট উন্মুক্ত / আন-লুকান

জেডিসি পুনরায় ভাঁজ / পুনরায় গোপন পাঠ্য

zr উভয় ফাইল সম্পূর্ণ উন্মোচিত করবে (ব্যবহার : ভাঁজ সম্পর্কে আরও সাহায্যের জন্য ভাঁজ)

: ডিফআপডেট পরিবর্তনের জন্য ফাইলগুলি পুনরায় স্ক্যান করবে

আপনি পরিবর্তিত পাঠ্যকে উপরে স্থানান্তরিত করতে বা পরিবর্তন আনতে শুরু করার সাথে সাথে ফাইলগুলির এখন-অভিন্ন অংশগুলিও স্বয়ংক্রিয়ভাবে গুটিয়ে যাবে।

আপনি যখন শেষ করেন, তখন আপনি প্রস্থান করে দুটি ফাইলই লিখতে পারেন : এক্সএ!

আপনি যেমন লিখতে পারেন, ছেড়ে দিতে পারেন, পরিবর্তনগুলি বাতিল করতে পারেন ইত্যাদি, একবারে একটি ফলক যেমন আপনি সাধারণত ভিআইএম দিয়ে করেন।

ইচ্ছামত ফাইলগুলি সম্পাদনা করতে আপনি সমস্ত সাধারণ ভিআইএম কমান্ড ব্যবহার করতে পারেন; আমি কেবল সর্বাধিক সাধারণ এবং দরকারী কমান্ডগুলি বর্ণনা করেছি যা আপনি সম্ভবত কোনও ভিমিডিফ সেশনে ব্যবহার করতে পারেন (জেনেরিক ভিমের কোনও বিপরীতে)।


6

তুলনা ছাড়াই এই জন্য চূড়ান্ত সরঞ্জাম!

লিঙ্ক: http://www.scootersoftware.com/

উইন্ডোজ এবং লিনাক্স জন্য উপলব্ধ।

জেফ কিছুক্ষণ আগে এই সরঞ্জামটি সম্পর্কে একটি ভাল ওভারভিউ নিবন্ধ লিখেছিলেন:
http://www.codinghorror.com/blog/archives/000454.html


তুলনা ছাড়িয়ে দুর্দান্ত!
ক্লিনটন ব্ল্যাকমোর

এটি কি * নিক্স সিস্টেমে পাওয়া যায়?
প্রীত সংঘ

3 এর তুলনা ছাড়াই লিনাক্সে কনসোল অ্যাপ্লিকেশন হিসাবে চলবে না। এটি এক্স উইন্ডোজ প্রয়োজন। সমর্থিত লিনাক্স ডিস্ট্রিবিউশন (32-বিট) Red Hat Enterprise Linux 4, 5 ফেডোরা 4 - 10 নোভেল সুস লিনাক্স এন্টারপ্রাইজ ডেস্কটপ 10 ওপেনসুএস 10.3, 11 উবুন্টু 6.06 - 8.10 পরীক্ষা করা হয়নি কোনও 64-বিট লিনাক্স কার্নেল সামঞ্জস্যপূর্ণ নয় Red Hat Enterprise Linux 3
চিহ্নিত করুন নরগ্রেন

আমি এই সরঞ্জাম ছাড়া আর বাঁচতে পারে না! একটি চরম সময় সেভার। আমি যখন 1 বছর আগে পিসি থেকে ম্যাকে পরিবর্তিত হয়েছিলাম তখন খুব খুশি হয়েছিলাম যে এটি ম্যাকের কাছেও সীমাবদ্ধ ছিল।
জেপসি

5

নিমার ওয়ান-লাইনারে প্রসারিত করে, আপনি এটি শেল ফাংশন হিসাবে করতে এবং এটি আপনার .bashrc এ ফেলে দিতে পারেন

diff <(grep -v '^#' f1) <(grep -v '^#' f2)

হয়ে যায় (ইউ ব্যবহার করে কারণ আমি একীভূত বিভিন্নতা পছন্দ করি)

function cleandiff {
  diff -u <(grep -v '^#' $1| grep -v '^ *$') <(grep -v '^#' $2 | grep -v '^ *$')
}

আপনি যদি জিইআইআই ভিন্ন ভিন্ন দর্শকদের পছন্দ করেন তবে মেল্ডটি দুর্দান্ত, এবং সংশোধন নিয়ন্ত্রিত ডায়ার্স / ফাইলগুলি বোঝে।


মেল্ডের জন্য +1, যা গ্রাফিকাল ডিফারিং সুওকে আরও অনেক সহজ করে তুলেছে।
অ্যাভেরি পেইন

4

মন্তব্যগুলি সাফ করার পরে, আমি কেডিফ 3 ব্যবহার করার পরামর্শ দেব, এটি একটি দুর্দান্ত ডিফ / মার্জ টুল এবং এটি ব্যবহার করার জন্য আপনার ভিএমইউ ফু লাগবে না :)


3

এটি করার আরও একটি দুর্দান্ত উপায় থাকতে পারে তবে ব্যবহারিকভাবে (এবং দ্রুত):

grep -v '^#' server1-snmpd.conf | grep -v '^ *$' > server1-snmpd.conf-clean
grep -v '^#' server2-snmpd.conf | grep -v '^ *$' > server2-snmpd.conf-clean
diff server1-snmpd.conf-clean server2-snmpd.conf-clean

2

আপনি যদি ব্যাশের মতো শেল ব্যবহার করেন তবে আপনি এটি ব্যবহার করে দেখতে পারেন:

# Name this diff-stripped
STRIPPED=
for i in $*; do
    egrep -v "^#|^\s*" "$i" > "$i.stripped"
    STRIPPED="$STRIPPED $i.stripped"
done

diff $STRIPPED

তারপরে এটিকে অনুরোধ করুন:

 diff-stripped file1 file2 ...

আপনি যেটি পরিবর্তন diffকরতে পারেন vimdiffবা gvimdiffযা উভয়ই আসে vim


2

জেরেক্সেসের সমাধানটি প্রসারিত করে, আপনি diffপার্থক্যগুলি প্রদর্শন করার চেয়ে বেশি পরিশীলিত সরঞ্জাম ব্যবহার করতে পারেন ।

wdiff

wdiffঅনেক সময় "খুব স্মার্ট" হতে পারে তবে কনফিগারেশন ফাইলগুলির মধ্যে পার্থক্যগুলিকে দ্রুত নজর দেওয়ার জন্য আমি প্রায়শই দরকারী বলে মনে করি। এই স্ক্রিপ্টটি রঙের সাথে আউটপুট দেওয়ার জন্য ব্যবহার করা যেতে পারে:

#!/bin/bash

RED=$'\e'"[1;31m"
GREEN=$'\e'"[1;32m"
RESET=$'\e'"[0m"
WDIFF_ARGS="-w$RED -x$RESET -y$GREEN -z$RESET --avoid-wraps"

wdiff $WDIFF_ARGS \
  <(grep -vE '^([ \t]*#|^[ \t]*$)' $1) \
  <(grep -vE '^([ \t]*#|^[ \t]*$)' $2) \
  | less -R

apt-get install wdiffএই স্ক্রিপ্টটি ব্যবহারের ঠিক আগে উবুন্টু এবং অন্যান্য ডেবিয়ান-ভিত্তিক সিস্টেমে ।

মেশানো

মাঠ একটি দুর্দান্ত জিইউআই বিকল্প, তবে এর "পাঠ্য ফিল্টারিং" বৈশিষ্ট্যটিতে কিছু সমস্যা রয়েছে। পাঠ্য ফিল্টারিংয়ের পরিবর্তে, আমি মেল্ডে ফলাফলগুলি দেখানোর আগে মন্তব্যগুলি পুরোপুরি সরিয়ে ফেলি। অপূর্ণতা ফাইলগুলি তুলনা করার সময় সম্পাদনা করার ক্ষমতা হারাচ্ছে। মেল্ড ব্যবহারের জন্য এখানে একটি সাধারণ স্ক্রিপ্ট:

#!/bin/bash

meld <(grep -vE '^([ \t]*#|^[ \t]*$)' $1) \
     <(grep -vE '^([ \t]*#|^[ \t]*$)' $2)

2

কখনও কখনও, ডিফের আগে ফাইলগুলি বাছাই করে বেশ কয়েকটি অতিরিক্ত সাধারণ লাইনগুলি ছিনিয়ে নেওয়া যায়, তাই আমি ইতিমধ্যে নিম্নলিখিতগুলি যা লিখেছি তা যুক্ত করব:

 diff <(grep -v '^#' f1 | sort) <(grep -v '^#' f2 | sort)

এটি অবশ্যই সেই ফাইলগুলির জন্য অর্থবোধ করে যেখানে লাইনগুলির ক্রম এটির সামগ্রীতে প্রভাব ফেলে না (তাই সচেতন হন)।


1

এটি নিমের ওয়ান লাইনের সমান, তবে কারও অনুরোধ অনুসারে খালি লাইনগুলি ফিল্টার করবে।

diff -u <(egrep -v '^(#| *$)' f1) <(egrep -v '^(#| *$)' f2)

(আমি যদি সম্ভব হয় তবে কলর্ডিফও ইনস্টল করব এবং এটি সাধারণ ভিন্নতার জায়গায় ব্যবহার করব)


1

আমি ব্যবহার WinMerge http://winmerge.org পরিবর্তন ফাইলগুলিতে, মঞ্জুর আমি তাদের আমার মেশিনে চূর্ণ করতে হবে, কিন্তু এটা কাজ করে।

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