আলাদা-কলামের নাম নির্ধারণ করুন


1

আমার কাছে দুটি ফাইল এবং একটি শেল স্ক্রিপ্ট রয়েছে।

ফাইল 1:

Batman
Superman
John Snow
Jack Sparrow
Rob Stark

ফাইল 2:

Batman
Ironman
Superman
Spiderman
John Snow
Arya Stark
Jack Sparrow
Rob Stark
The hound

লিপি:

#!/bin/bash

sort ~/Desktop/file1.txt > ~/Desktop/fileA.txt
sort ~/Desktop/file2.txt > ~/Desktop/fileB.txt
diff -y ~/Desktop/fileA.txt ~/Desktop/fileB.txt > ~/Desktop/diff.txt

স্ক্রিপ্টটি একেবারে সূক্ষ্মভাবে চালিত হয়, ফলাফলটি:

                                  > Arya Stark
Batman                              Batman
                                  > Ironman
Jack Sparrow                        Jack Sparrow
John Snow                           John Snow
Rob Stark                           Rob Stark
                                  > Spiderman
Superman                            Superman
                                  > The hound

তবে আমি আউটপুটটি স্বয়ংক্রিয়ভাবে হতে চাই:

File A                               File B
                                  > Arya Stark
Batman                              Batman
                                  > Ironman
Jack Sparrow                        Jack Sparrow
John Snow                           John Snow
Rob Stark                           Rob Stark
                                  > Spiderman
Superman                            Superman
                                  > The hound

এটি কেবল ভিন্ন কমান্ড ব্যবহার করে সবচেয়ে ভাল উপায় কি?

উত্তর:


3

আপনার ব্যবহারের ক্ষেত্রে আপনি বিভিন্ন রকম উন্নতি করতে পারেন তবে সবকিছু একইরকম রেখে, আপনার স্ক্রিপ্টে আরও একটি লাইন যুক্ত করা এবং তারপরে >>ওভাররাইটের পরিবর্তে শেষ লাইন সংযোজন ( ) করা দরকার:

#!/bin/bash

echo -e "FileA\t\t\t\t\t\t\t\tFileB" > diff.txt
sort ~/Desktop/file1.txt > ~/Desktop/fileA.txt
sort ~/Desktop/file2.txt > ~/Desktop/fileB.txt
diff -y ~/Desktop/fileA.txt ~/Desktop/fileB.txt >> ~/Desktop/diff.txt

এটি লেখার আরও ভাল উপায় হবে

#!/usr/bin/env bash

file1="$1"
file2="$2"

printf "%-36s%36s\n" "FileA" "FileB"
diff -y <(sort "$file1") <(sort "$file2")

এবং তারপরে চালাও:

script.sh file1.txt file2.txt > diff.txt

এটি অপ্রয়োজনীয় অস্থায়ী ফাইল তৈরি করা এড়িয়ে যায় এবং স্ক্রিপ্টে ফাইলের নামগুলি হার্ডকোড করা প্রয়োজন হয় না।

বিকল্পভাবে, আপনি যদি চান প্রকৃত ফাইলের নামগুলি প্রদর্শিত হয়, তবে printfউপরে কলটি পরিবর্তন করুন

printf "%-36s%36s\n" "$file1" "$file2"

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