দুটি টেক্সট ফাইলের মধ্যে কিছু বিভাজক যুক্ত করে একত্রিত করতে চান?


16

cat file1 file2দুটি পাঠ্য ফাইল একত্রিত হবে। তবে আমি যদি একটি লাইন বা দু'য়ের মতো কিছু বিভাজক যুক্ত করতে চাই তবে আমাকে ********************************কি প্রথম ফাইলটি খুলতে হবে এবং তার শেষে লাইনটি যুক্ত করতে হবে, বা দ্বিতীয় ফাইলটি খুলতে হবে এবং তার শীর্ষে লাইনটি যুক্ত করতে হবে, এবং তারপরে রান করুন catকমান্ড? এটি কি একটি কমান্ড চালানো দিয়ে করা যায়?

উত্তর:


17

ইন bashএবং zshআপনি করতে পারেন:

cat file1 <(echo '********************************') file2

বা যেমন মাইক্রজার তার মন্তব্যে ইঙ্গিত করেছেন (কোনও শেলের মধ্যে):

echo '********************************' | cat file1 - file2

এবং বাশে যেমন ডেভিড জেড মন্তব্য করেছেন:

cat file1 - file2 <<< '********************************'

ফাইলগুলিতে যে কোনও নতুন লাইন দেখানো হবে। আপনি যদি "বিভাজক" এর পরে কোনও নতুন লাইন না চান (যেমন উদাহরণস্বরূপ file2একটি নিউলাইন দিয়ে শুরু হয়) আপনি ব্যবহার করতে পারেন echo -n '****', সুতরাং নিউ-লাইনটি পরে চাপুন *


7
আপনি যে কোনও শেলের মতো এই একই জিনিসটি করতে পারেনecho '**********************' |cat file - file2
মাইকসার্ভ

ধন্যবাদ। বিড়াল সর্বদা অন্তর্ভুক্ত ফাইলের মধ্যে একটি নতুন লাইন যুক্ত করে?
সকলের জন্য স্ট্যাক এক্সচেঞ্জ

1
@ টিম - অবশ্যই echoসবসময় করে।
মাইক্রজারভ

1
@ টিম - এখানে সেভাবে দেখছেন না, তবে নিজের জন্য দেখুন -printf 'no newline' | tee file1 >file2; printf 'no newline' | cat file1 - file2
মাইকজার্ভ

1
@ টিম আপনি ...<(echo -n '****')প্রতিধ্বনি থেকে নতুন লাইন দমন করতে ব্যবহার করতে পারেন । catফাইলটির একটি (শেষে) কেবল তখনই একটি প্রদর্শিত হয়।
অ্যান্থন

6

এখানcat থেকে পাওয়া হিসাবে ব্যবহার না করে অন্য পদ্ধতির ,

awk 'FNR==1{print "******"}{print}' file1 file2 | sed '1d'

চূড়ান্ত sed 1dপাইপটি হ'ল প্রথম লাইনটি সরিয়ে ফেলতে হবে যার মধ্যে ডেলিমেটারও থাকবে।

তবে sedআমরা যদি 1_ সিআর তার মন্তব্যে প্রস্তাবিত কমান্ডটি ব্যবহার করি তবে চূড়ান্ত ব্যবহারটি খুব ভালভাবে এড়ানো সম্ভব ।

awk 'FNR==1 && NR!=1 {print "******"}{print}' file1 file2

1
আপনি sedawkFNR == 1 && NR != 1
14

10 কে পৌঁছে দেওয়ার জন্য অভিনন্দন!
জি-ম্যান

@ জি-ম্যান, অনেক ধন্যবাদ একত্রিত হতে আপনার এটি খুব সুন্দর :)
রমেশ

এটি ফাইলের নিদর্শনগুলির পুনঃনির্মাণের সহজ এক্সটেনশনের অনুমতি দেয়
পল

3

আপনি এটিকে একাধিক কমান্ডে বিভক্ত করতে পারেন:

cat file1; echo '------------'; cat file2

এবং আপনি একটি গ্রুপ কমান্ড বা সাবসেল ব্যবহার করে পাইপ বা পুনঃনির্দেশ করতে পারেন:

# GROUP COMMAND:
{ cat file1; echo '----------'; cat file2; } | other-command
#                                        ^ final semicolon is part of the syntax!

# SUBSHELL:
( cat file1; echo '----------'; cat file2 ) | other-command

অবশ্যই আপনি স্বাভাবিকের মতো সেমিকোলন ব্যবহার না করে একাধিক লাইনে এটি লিখতে পারেন। এবং অন্য একটি ডিলিমিটার ইত্যাদির সাহায্যে অন্য ফাইলটিতে প্রসারিত করা সহজ etc.


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