দুটি ফাইলের প্রথম লাইনে কীভাবে পার্থক্য করবেন?


17

সম্পূর্ণ ফাইলের বিপরীতে আমি কেবল দুটি ফাইলের প্রথম লাইনটি পৃথক করতে চাই। আমি যে কিভাবে করতে হবে? আমার কেবল প্রথম লাইনের জন্য একটি সমাধান দরকার তবে আপনি যদি লাইনের সংখ্যা নির্দিষ্ট করতে পারেন তবে এটি আরও ভাল উত্তর হতে পারে।

সুতরাং ভিন্ন ভিন্ন দুটি ফাইলের মধ্যে কোনও পার্থক্য ফিরিয়ে আনবে না:

a
1
2

এবং:

a
3
4

এটা কি তোমার জন্য কাজ করেছে ...?
নার্ডওয়ালার

@ আওয়ার্ডওয়ালার ইয়ুপ, গৃহীত
gsingh2011

শীতল মটরশুটি. অন্যান্য বিকল্পগুলি চিন্তা করার চেষ্টা করছিল, ভাগ্যক্রমে এটি প্রয়োজনীয় নয়।
নার্ডওয়ালার

উত্তর:


26

আপনি এখানে যান:

diff <(head -n 1 file1) <(head -n 1 file2)

(এটি আর কিছু দেয় না)।

diff <(head -n 2 file1) <(head -n 2 file2)

Returns:
2c2
< 1
---
> 3

আপনি উল্লিখিত জিনিসগুলি করতে আপনি এটি কোনও স্ক্রিপ্টে অন্তর্ভুক্ত করতে পারেন।

#!/bin/bash

fileOne=${1}
fileTwo=${2}
numLines=${3:-"1"}

diff <(head -n ${numLines} ${fileOne}) <(head -n ${numLines} ${fileTwo})

এটি ব্যবহার করতে, কেবল স্ক্রিপ্টটি দিয়ে এক্সিকিউটেবল chmod +x nameofscript.shএবং তারপরে ./nameofscript.sh ~/file1 ~/Docs/file2সম্পাদন করতে পারেন, এটি যদি কমান্ডের শেষে আরও একটি সংখ্যায় যুক্ত করতে চান তবে এটি 1 এ লাইনগুলির ডিফল্ট # টি ছেড়ে দেয়।

(অথবা আপনি আপনার স্ক্রিপ্টে -f1 file1 -f2 file2 -n 1 দিয়ে স্যুইচ করতে পারেন, তবে আমি তার মামলার বিবরণীটি আমার মাথার শীর্ষে স্মরণ করতে পারি না)।

headশুরু থেকেই # টি লাইনের পরামর্শ অনুসারে প্রত্যাবর্তন করে -n। আপনি যদি বিপরীতটি করতে চান তবে এটি হবে tail -n ${numLines}(লেজটি শেষ থেকে রেখার সংখ্যাটি করে) does

5/10/16 সম্পাদনা করুন:

এটি বাশের জন্য নির্দিষ্ট (এবং সামঞ্জস্যপূর্ণ শাঁস)। আপনার যদি অন্য কোনও থেকে এটি ব্যবহার করার প্রয়োজন হয়:

bash -c 'diff <(...) <(...)'

যখন আমার দুটি ডিরেক্টরিকে পৃথক করতে হবে তখন পুনরাবৃত্তির জন্য এটি কীভাবে কাজ করবে?
ল্যানক্সিক্স

diff -r dir1 dir2ডিরেক্টরিগুলির জন্য @lanoxx , এটি সীমাবদ্ধ করার জন্য আপনি সম্ভবত এটি অন্য কোনও দিকে পাইপ করতে চাইবেন। আপনার যদি নির্দিষ্ট বিবরণ থাকে তবে একটি নতুন প্রশ্ন খুলুন এবং এখানে একটি লিঙ্ক দিন।
নার্ডওয়ালার

ভাল মূলত একই প্রশ্নটি কেবল পুনরাবৃত্তভাবে: দুটি ডিরেক্টরিতে সমস্ত ফাইলের জন্য কেবল ডিফ (কেবল প্রথম এন লাইন | প্রথম এন লাইনগুলি ছাড়া সমস্ত কিছুই)।
ল্যানক্সিক্স

@ ল্যানোএক্সএক্স যেমন বলেছিলাম, একটি নতুন প্রশ্ন করুন এবং এটি লিঙ্ক করুন। অন্য কিছু ব্যবহারকারীর প্রশ্নের পরিধি বাড়ানোর পরিবর্তে সুপার ব্যবহারকারী সম্প্রদায়ের পক্ষে এটি সর্বোত্তম অনুশীলন।
নার্ডওয়ালার 16

1
@ ভেরিডিয়ান আপনি কোন শেল ব্যবহার করছেন? এটি বাশ নির্দিষ্ট, সুতরাং আপনার কল করতে হতে পারেbash -c "diff <(...) <(...)"
নারডওয়ালার

-1

diff -U (লাইনগুলির n) ফাইল 1 ফাইল 2


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