সংস্করণ সংখ্যাটি পড়ার চেষ্টা করার সময় vim
, আমি প্রচুর অতিরিক্ত লাইন পেয়েছি যা আমার এড়ানো উচিত। আমি ম্যানুয়ালটি পড়ার head
চেষ্টা করেছি এবং নিম্নলিখিত আদেশটি চেষ্টা করেছি:
vim --version | head -n 1
আমি জানতে চাই যে এটি সঠিক পন্থা কিনা?
সংস্করণ সংখ্যাটি পড়ার চেষ্টা করার সময় vim
, আমি প্রচুর অতিরিক্ত লাইন পেয়েছি যা আমার এড়ানো উচিত। আমি ম্যানুয়ালটি পড়ার head
চেষ্টা করেছি এবং নিম্নলিখিত আদেশটি চেষ্টা করেছি:
vim --version | head -n 1
আমি জানতে চাই যে এটি সঠিক পন্থা কিনা?
vim --version 2>&1 | sed 1q
:)
আপনার প্যাকেজটি stderr
@ উইলিয়ামাম পার্সেল হিসাবে একটি চেক সরবরাহ করে যেমন তথ্যটি আউটপুট করে কিনা তা পরীক্ষা করে দেখুন।
উত্তর:
হ্যাঁ, একটি কমান্ড থেকে আউটপুট প্রথম লাইন পেতে এক উপায়।
যদি কমান্ডটি এমন কোনও স্ট্যান্ডার্ড ত্রুটির জন্য আউটপুট দেয় যা আপনি একই পদ্ধতিতে ক্যাপচার করতে চান, আপনাকে কমান্ডের স্ট্যান্ডার্ড ত্রুটিটিকে স্ট্যান্ডার্ড আউটপুট প্রবাহে পুনর্নির্দেশ করতে হবে:
utility 2>&1 | head -n 1
প্রথম লাইনটি ক্যাপচার করার জন্য আরও অনেকগুলি উপায় রয়েছে, যার মধ্যে রয়েছে sed 1q
(প্রথম লাইনের পরে প্রস্থান করুন), sed -n 1p
(কেবল প্রথম লাইনটি মুদ্রণ করুন, তবে সমস্ত কিছু পড়ুন), awk 'FNR == 1'
(কেবল প্রথম লাইনটি মুদ্রণ করুন, তবে আবার সমস্ত কিছু পড়ুন) ইত্যাদি
আমি ব্যবহার করব:
awk 'FNR <= 1' file_*.txt
@ কুসালানন্দ উল্লেখ করেছেন যে কমান্ড লাইনে প্রথম লাইনটি ক্যাপচার করার অনেকগুলি উপায় রয়েছে তবে head -n 1
ওয়াইল্ডকার্ডগুলি ব্যবহার করার সময় এটি ব্যবহার করা সেরা বিকল্প নয় কারণ এটি অতিরিক্ত তথ্য মুদ্রণ করবে। পরিবর্তন 'FNR == i'
করা 'FNR <= i'
প্রথম আই লাইনগুলি পেতে অনুমতি দেয়।
উদাহরণস্বরূপ, আপনার যদি file_1.txt নামক ফাইল রয়েছে ..., file_n.txt:
awk 'FNR <= 1' file_*.txt
hello
...
bye
তবে head
ওয়াইল্ডকার্ড সহ ফাইলটির নাম মুদ্রণ করুন:
head -1 file_*.txt
==> file_1.csv <==
hello
...
==> file_n.csv <==
bye
head -qn1 file_*.txt