বিড়ালের সাথে কেবল বিজোড় লাইনগুলি দেখান


28

হাই,

সম্ভবত এটি খুব সহজ কিছু, তবে আমি এখন পয়েন্টটি পাই না। লিনাক্সে, শেল, একটি পাঠ্য ফাইল দেওয়া আছে, আমি কীভাবে বিড়াল ফাইলের মতো কিছু করতে পারি তাই আমি কেবল প্রথম লাইন, তৃতীয় লাইন, 5, 7, 9 এবং আরও দেখতে পাই?

বিড়ালের সাথে না থাকলে, অন্য কমান্ড দিয়ে

ধন্যবাদ

bash 

উত্তর:


41

ব্যবহার awk:awk 'NR % 2 == 0' filename

সম্পাদনা: সরিয়ে ফেলা হয়েছে {print}, যেমন ভূস্টডগ 74৪ এর উত্তরে প্রদর্শিত হয়েছে এবং রবার্তো বনভোলেট মন্তব্য করেছেন।


1
{print}ডিফল্ট ক্রিয়া, তাই awk 'NR % 2 == 0' < myfileযথেষ্ট।

3
@ আরবার্তো, ইনপুট পুনঃনির্দেশের প্রয়োজন নেই।
ব্যবহারকারী31894

1
একটি নোট হিসাবে, এটি এমনকি লাইনগুলি দেখায় (যেখানে প্রথম লাইনটি 1 হয়) এবং বিজোড় লাইনগুলি (যদি আপনি প্রথম লাইনটিকে 0 হিসাবে মনে করেন)। প্রতিস্থাপন 2 == 0সঙ্গে 2 == 1বিপরীত জন্য।
সিডি


7

সেড ব্যবহার করুন:

sed -n 1~2p filename

1
এটি একটি জিএনইউ এক্সটেনশন। এটি জিএনইউ sedডিফল্ট নয় এমন সিস্টেমে কাজ করতে পারে না ।
ক্রিস জনসেন

সত্য তবে লিনাক্সের বেশিরভাগ স্বাদের সাথে কাজ করা উচিত

হুম .. আমি কেবল "সেড --posix -n 1 ~ 2p ফাইলের নাম" চেষ্টা করেছি এবং এটিও কাজ করে বলে মনে হচ্ছে। --Posix gnu এক্সটেনশনের জন্য সমর্থন সরানোর কথা রয়েছে।

জিএনইউ sedম্যানুয়াল gnu.org/software/sed/manual/html_node/Add્રેસ.html# অ্যাড্রেসস বলছে "প্রথম - এই জিএনইউ এক্সটেনশানটি ..."। এটি উল্লেখ নেই --posix। আমি যখন চেষ্টা করি gsed --posix -n 1~2p(জিএনইউ সেড 4.2.1), আমি পাই gsed: -e expression #1, char 2: unknown command: ‘~’
ক্রিস জনসেন

ঠিক আছে .. বুদ্ধিমান। আমার সেডের সাথে কী সমস্যা তা জানি না। আমি সাইগউইন ব্যবহার করছি, যাতে এটির সাথে কিছু করার থাকতে পারে।


2

2 টি উপায়ে আপনি এজেড দিয়ে এটি করতে পারেন

$ awk '{getline;print}' file # the equivalent of the selected sed answer
$ awk 'NR%2==0' file

বা ঠিক খোল দিয়ে

i=1; while read -r line; do [ $((i++ % 2)) -eq 0 ] && echo $line; done <"file"


0

এটি পরীক্ষা করা হয়নি (ম্যাক ওএস এক্সে কাজ করে বলে মনে হচ্ছে না), তবে জিএনইউ সেড first~stepঠিকানা নির্বাচন হিসাবে সমর্থন করে , উদাহরণস্বরূপ:

sed -n 1~2p file

প্রথম লাইনে শুরু হবে এবং তার পরে প্রতিটি অন্যান্য লাইন মুদ্রণ করবে।


ঠিক আছে, এটি একটি জিএনইউ এক্সটেনশন। ম্যাক ওএস এক্স sedবেস ইনস্টলেশনতে একটি BSD ব্যবহার করে ।
ক্রিস জনসেন

-1

পরীক্ষা করতে অক্ষম, একটি লিঙ্ক পাওয়া গেছে: বিড়াল -n $ 1 | গ্রেপ "$ ওডিডিআরই" | কাট-বি 8-> অডফাইল ile


আপনি সবচেয়ে গুরুত্বপূর্ণ জিনিসটি মিস করেছেন ... যা ODDREসেট করা আছে। তবে এই উত্তরটি কেবল তখনই কাজ করবে যদি ফাইলটি এক মিলিয়ন লাইনের চেয়ে কম হয়।
অ্যান্ড্রু ম্যাকগ্রিগোর

-2

প্রয়োজনীয় ফলাফলের জন্য আপনি এই আদেশগুলি ব্যবহার করতে পারেন

awk 'এনআর% 2 == 1'

সেড -ne '1 ~ 2 পি'


2
-1। প্রায় 10 বছর আগে এই উত্তরগুলি সদৃশ, ছোট পার্থক্য মোটেই ব্যাখ্যা করা হয় না। আর ls -lএখানে কেন ?
কামিল ম্যাকিয়েরোভস্কি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.