একটি নথিতে লাইন গণনা কিভাবে?


1075

আমার মতো লাইন রয়েছে এবং আমি জানতে চাই যে আমার আসলে কতগুলি রেখা রয়েছে ...

09:16:39 AM  all    2.00    0.00    4.00    0.00    0.00    0.00    0.00    0.00   94.00
09:16:40 AM  all    5.00    0.00    0.00    4.00    0.00    0.00    0.00    0.00   91.00
09:16:41 AM  all    0.00    0.00    4.00    0.00    0.00    0.00    0.00    0.00   96.00
09:16:42 AM  all    3.00    0.00    1.00    0.00    0.00    0.00    0.00    0.00   96.00
09:16:43 AM  all    0.00    0.00    1.00    0.00    1.00    0.00    0.00    0.00   98.00
09:16:44 AM  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
09:16:45 AM  all    2.00    0.00    6.00    0.00    0.00    0.00    0.00    0.00   92.00

লিনাক্স কমান্ড ব্যবহার করে সেগুলি গণনা করার কোনও উপায় আছে কি?


4
g <Ctrl-g>
ভিএম

30
@ লুভ preet৩প্রীতকে আপনি কীভাবে ভিএম থেকে প্রস্থান করবেন
সাইক্লার ইটনার

5
@ স্কলার আইটনার এবং যদি আপনার কীভাবে ভিআইএম থেকে প্রস্থান করতে হয় তা সন্ধান করতে হবে, <esc> :q!তবে এর একমাত্র উত্তর। (এটি একটি রসিকতা, এটি সমস্ত সংরক্ষিত পরিবর্তনগুলি মুছে ফেলবে — রসিকতা হ'ল যদি আপনি যদি ভিএম না জানেন তবে কোনও ফাইলের গোলমাল করা সহজ, তাই এটি সংরক্ষণ না করা ভাল।
রায়ান

উত্তর:


2028

ব্যবহার wc:

wc -l <filename>

এটি এতে রেখার সংখ্যা আউটপুট দেবে <filename>:

$ wc -l /dir/file.txt
3272485 /dir/file.txt

বা, <filename>ফলাফল ব্যবহার থেকে বাদ দিতে wc -l < <filename>:

$ wc -l < /dir/file.txt
3272485

আপনি wcপাশাপাশি তথ্য পাইপ করতে পারেন :

$ cat /dir/file.txt | wc -l
3272485
$ curl yahoo.com --silent | wc -l
63

18
এটা অসাধারণ!! আপনি লাইন নম্বরটিতে সংযুক্ত ফাইলের নামটি পরিত্রাণ পেতে অজস্র ব্যবহার করতে পারেন:wc -l <file> | awk '{print $1}
চিওহো

80
এমনকি আরও খাটো, আপনি করতে পারেনwc -l < <filename>
দশ

5
@ জিজিবি 6767 আপনি ফাইল নামটি থেকেও মুক্তি পেতে পারেনcat <file> | wc -l
baptx

14
এবং আপনার সাথে watch wc -l <filename>রিয়েল-টাইমে এই ফাইলটি অনুসরণ করতে পারেন। উদাহরণস্বরূপ লগ ফাইলের জন্য এটি দরকারী।
ডার্কসাইড

27
সতর্ক থাকুন যে ডাব্লুসি-এল "নিউলাইনস" গণনা করে cou আপনার কাছে 2 লাইনের পাঠ্য এবং একটি "নিউলাইন" চিহ্নের মধ্যে একটি ফাইল রয়েছে, ডাব্লুসিটি "2" এর পরিবর্তে "1" আউটপুট দেবে।
কনস্টান্টিন

140

সমস্ত লাইন ব্যবহার গণনা:

$ wc -l file

নিদর্শন ব্যবহারের সাথে শুধুমাত্র লাইনগুলি ফিল্টার এবং গণনা করতে:

$ grep -w "pattern" -c file  

বা ম্যাচটি উল্টাতে -v ব্যবহার করুন:

$ grep -w "pattern" -c -v file 

-E, -i এবং -x আরোগুলি একবার দেখার জন্য গ্রেপ ম্যান পৃষ্ঠাটি দেখুন ...


অদ্ভুতভাবে কখনও কখনও grep -cআমার জন্য আরও ভাল কাজ করে। মূলত wc -lবিরক্তিকর "বৈশিষ্ট্য" প্যাডিং স্পেস উপসর্গ কারণে।
মার্কহু


43

অনেক উপায় আছে। ব্যবহার wcএক।

wc -l file

অন্যদের অন্তর্ভুক্ত

awk 'END{print NR}' file

sed -n '$=' file (জিএনইউ সেড)

grep -c ".*" file

3
হ্যাঁ, তবে wc -l fileকেবলমাত্র যে ফাইল filename.wc -l < /filepath/filename.ext
ফাইলটি

GNU গ্রেপ-এইচ যুক্তি ব্যবহার করে ফাইলের নাম এবং গণনা ফিরে আসে। grep -Hc ".*" file
জ্লেমিনি

আমি এই সমাধানগুলিতে ভোট দিয়েছি কারণ wc -lকোনও ফাইলের আসল লাইন নয় বরং নতুন লাইন অক্ষর গণনা করা হয়েছে। এই উত্তরের অন্তর্ভুক্ত অন্যান্য সমস্ত কমান্ড আপনার লাইনগুলির প্রয়োজন হলে সঠিক নম্বর দেবে।
গ্রলিংচোস

27

wcইউনিক্স এবং ইউএনআইএক্স-এর মতো অপারেটিং সিস্টেমে সরঞ্জামটি "ওয়ার্ড কাউন্টার", তবে আপনি -lবিকল্পটি যুক্ত করে কোনও ফাইলের লাইন গণনা করতেও এটি ব্যবহার করতে পারেন ।

wc -l fooলাইন সংখ্যা গণনা করা হবে foo। আপনি এই জাতীয় প্রোগ্রাম থেকে পাইপ আউটপুটও পেতে পারেন: ls -l | wc -lযা আপনাকে বর্তমান ডিরেক্টরিতে (প্লাস ওয়ান) কতগুলি ফাইল রয়েছে তা বলবে।


3
ls -l | wc -l মোট আকারের লাইনের জন্য ডিরেক্টরিতে আপনাকে +1 ফাইলের সংখ্যা দেবে। আপনি ls -ld * | wc -lফাইলের সঠিক নম্বর পেতে পারেন ।
জোশুয়া লরেন্স আস্টিল

24

আপনি যদি কোনও ডিরেক্টরিতে সমস্ত ফাইলের মোট লাইন পরীক্ষা করতে চান তবে আপনি অনুসন্ধান এবং ডাব্লুসি ব্যবহার করতে পারেন:

find . -type f -exec wc -l {} +


15

যদি আপনি চান তবে লাইন সংখ্যা (এবং রেখার সংখ্যা নয় এবং মূup় ফাইলের নাম ফিরে আসবে):

wc -l < /filepath/filename.ext

পূর্বে উল্লিখিত হিসাবে এগুলিও কাজ করে (তবে অন্যান্য কারণে নিম্নমানের):

awk 'END{print NR}' file       # not on all unixes
sed -n '$=' file               # (GNU sed) also not on all unixes
grep -c ".*" file              # overkill and probably also slower

3
প্রশ্নটি জিজ্ঞাসা করার 3 বছর পরে এই উত্তর পোস্ট করা হয়েছিল এবং এটি কেবল অন্যগুলি অনুলিপি করছে। প্রথম অংশটি তুচ্ছ এবং দ্বিতীয়টি হ'ল সমস্ত ঘোস্টডগের উত্তর যুক্ত করা হয়েছিল। Downvoting।
ফেডরকিই 'এসও ক্ষতিগ্রস্থ হওয়া বন্ধ করুন'

4 বছর .. ডাউনভোটিং। চলুন দেখা যাক আমরা এক দশক দীর্ঘ ডাউনভোট রেখা পেতে পারি কিনা!
ড্যামিয়েন রোচে

1
না তুমি ভুল; ঘোস্টডগের উত্তরটি মূল প্রশ্নের উত্তর দেয় না। এটি আপনাকে লাইনের সংখ্যা এবং ফাইলের নাম দেয়। কেবল ফাইলের নাম পেতে আপনি করতে পারেন: filename.wc -l </filepath/filename.ext। আমি উত্তর পোস্ট করেছি কেন। awk, সেড এবং গ্রেপ এগুলি করার জন্য কিছুটা নিম্নমানের উপায়। যথাযথ উপায় হ'ল আমি তালিকাভুক্ত।
ggb667

8

এটি ব্যবহার করুন nl:

nl filename

থেকে man nl:

প্রতিটি FILE স্ট্যান্ডার্ড আউটপুট লিখুন, লাইন নম্বর যুক্ত করা সহ। কোনও ফাইল না দিয়ে, বা যখন ফাইল থাকে - স্ট্যান্ডার্ড ইনপুট পড়ুন।


এটি আমি প্রথম উত্তরটি পেয়েছি যে এমন একটি ফাইলের সাথে কাজ করে যা একটি একক পাঠ্য পাঠ্য রয়েছে যা একটি নতুন লাইনে শেষ হয় না, যা wc -l0 হিসাবে প্রতিবেদন করে Thank আপনাকে ধন্যবাদ।
স্কট জৌদ্রি

7

আমি এটি ব্যবহার করে যাচ্ছি:

cat myfile.txt | wc -l

আমি এটি গ্রহণযোগ্য উত্তরের চেয়ে পছন্দ করি কারণ এটি ফাইলের নাম মুদ্রণ করে না, এবং awkএটি ঠিক করতে আপনাকে ব্যবহার করতে হবে না। গৃহীত উত্তর:

wc -l myfile.txt

তবে আমি মনে করি সেরাটি হ'ল জিজিবি 6767's এর উত্তর:

wc -l < myfile.txt

আমি সম্ভবত এখন থেকে এটি ব্যবহার করা হবে। এটি আমার পথের চেয়ে সামান্য খাটো। যদি কেউ এটি পছন্দ করে তবে আমি এটি করার আমার পুরানো পদ্ধতিটি রাখছি। এই দুটি পদ্ধতির সাথে আউটপুট একই।


3
প্রথম এবং শেষ পদ্ধতি একই। শেষটি আরও ভাল কারণ এটি কোনও অতিরিক্ত প্রক্রিয়া

5

উপরে পছন্দের পদ্ধতিটি রয়েছে তবে "বিড়াল" কমান্ডটি সহায়ক হতে পারে:

cat -n <filename>

লাইন নম্বর সহ আপনাকে ফাইলের সম্পূর্ণ সামগ্রী প্রদর্শন করবে।


5

আমি একাধিক ফাইলের লাইন গণনা করার উপায় সন্ধান করার সময় আমি এই প্রশ্নটি দেখেছি, তাই আপনি যদি একটি .txt ফাইলের একাধিক ফাইল লাইন গণনা করতে চান তবে আপনি এটি করতে পারেন,

cat *.txt | wc -l

এটি একটি। টেক্সট ফাইলেও চলবে;)


5

wc -l লাইন গণনা করে না।

হ্যাঁ, এই উত্তরটি পার্টির জন্য কিছুটা দেরিতে হতে পারে, তবে আমি এখনও উত্তরে আরও দৃ solution় সমাধানের নথি পাইনি।

জনপ্রিয় বিশ্বাসের বিপরীতে, পসিক্সের মোটেও একটি নতুন লাইনের চরিত্রের সাথে ফাইলগুলি শেষ হওয়ার দরকার হয় না। হ্যাঁ, একটি পসিক্স 3.206 লাইনের সংজ্ঞাটি নিম্নরূপ:

শূন্য বা আরও অ-নিউ-লাইন> অক্ষর এবং একটি সমাপ্তি চরিত্রের ক্রম।

যাইহোক, অনেক লোক যা সম্পর্কে অবগত নয় তারা হ'ল পসিক্সও পসিএক্স ৩.১৯৫ অসম্পূর্ণ লাইনটিকে সংজ্ঞায়িত করে :

ফাইলের শেষে এক বা একাধিক অ-নিউ-লাইন> অক্ষরের একটি ক্রম।

অতএব, কোনও পেছনবিহীন ফাইলগুলি LFপুরোপুরি পসিক্স-সম্মতিযুক্ত।

আপনি যদি উভয় ইওএফ প্রকারকে সমর্থন না করা বেছে নেন তবে আপনার প্রোগ্রামটি পসিক্স-অনুগত নয়।

উদাহরণ হিসাবে, আসুন নীচের ফাইলটি দেখুন।

1 This is the first line.
2 This is the second line.

ইওএফের ব্যাপার না কেন, আমি নিশ্চিত যে আপনি দু'টি লাইনই সম্মত হবেন। কতগুলি লাইন বন্ধ করা হয়েছে তা না দেখে কতগুলি লাইন শুরু হয়েছে তা দেখে আপনি বুঝতে পেরেছেন। অন্য কথায়, পসিক্স অনুসারে, এই দুটি ফাইল উভয়েরই একই পরিমাণে রেখা রয়েছে:

1 This is the first line.\n
2 This is the second line.\n
1 This is the first line.\n
2 This is the second line.

ম্যান পৃষ্ঠাটি wcনিউলাইনগুলি গণনা সম্পর্কে তুলনামূলকভাবে পরিষ্কার , একটি নিউলাইন কেবল একটি 0x0aচরিত্র হিসাবে:

NAME
       wc - print newline, word, and byte counts for each file

অতএব, wcআপনি কী "লাইন" বলতে পারেন তা গণনা করার চেষ্টাও করে না। ব্যবহারwcলাইন গণনা করতে করা আপনার ইনপুট ফাইলের ইওএফ এর উপর নির্ভর করে খুব ভালভাবে মিসকাউন্টের দিকে পরিচালিত করতে পারে।

POSIX- সম্মতিযুক্ত সমাধান

আপনি উপরের উদাহরণের মতো লাইনgrep গণনা করতে ব্যবহার করতে পারেন । এই সমাধানটি আরও মজবুত এবং সুনির্দিষ্ট এবং এটি আপনার ফাইলের একটি লাইন কী হতে পারে তার সমস্ত স্বাদকে সমর্থন করে:

$ grep -c ^ FILE

4
cat file.log | wc -l | grep -oE '\d+'
  • grep -oE '\d+': কেবলমাত্র অঙ্কের সংখ্যা ফেরত দেওয়ার জন্য ।


3

পুনঃনির্দেশ / ফাইলের আউটপুট পাইপিং করা wc -lউচিত, নিম্নলিখিতগুলির মতো:

cat /etc/fstab | wc -l

যা নং প্রদান করবে। শুধুমাত্র লাইন।


3

অথবা ফাইলের নামের প্যাটার্ন সহ সাব-ডাইরেক্টরিগুলিতে সমস্ত লাইন গণনা করুন (উদাহরণস্বরূপ ফাইলের নামের সাথে টাইমস্ট্যাম্প সহ লগফিলস):

wc -l ./**/*_SuccessLog.csv

2

আমি জানি এটি পুরানো তবে এখনও: ফিল্টার করা লাইনগুলি গণনা করুন

আমার ফাইলটি দেখে মনে হচ্ছে:

Number of files sent
Company 1 file: foo.pdf OK
Company 1 file: foo.csv OK
Company 1 file: foo.msg OK
Company 2 file: foo.pdf OK
Company 2 file: foo.csv OK
Company 2 file: foo.msg Error
Company 3 file: foo.pdf OK
Company 3 file: foo.csv OK
Company 3 file: foo.msg Error
Company 4 file: foo.pdf OK
Company 4 file: foo.csv OK
Company 4 file: foo.msg Error

আমি যদি জানতে পারি যে কতগুলি ফাইল ঠিক আছে পাঠানো হয়েছে:

grep "OK" <filename> | wc -l

অথবা

grep -c "OK" filename

2

পরিবর্তনশীল এই কমান্ডটি ব্যবহার করে লাইনের সংখ্যা এবং স্টোরের ফলাফল গণনা করুন:

count=$(wc -l < file.txt) echo "Number of lines: $count"


1

যেমনটি অন্যরা বলেছেন wc -lসেরা সমাধান তবে ভবিষ্যতের রেফারেন্সের জন্য আপনি পার্ল ব্যবহার করতে পারেন:

perl -lne 'END { print $. }'

$.লাইন নম্বর রয়েছে এবং ENDস্ক্রিপ্টের শেষে ব্লকটি কার্যকর করা হবে।


1
কাজ করে না:dir | perl -lne 'END { print $. }' Can't find string terminator "'" anywhere before EOF at -e line 1.'
VeikkoW

1
@ ভিক্কো ডাব্লু আমার পক্ষে কাজ করে। আপনি যদি উইন্ডোজটিতে থাকেন তবে বিভিন্ন উদ্ধৃতি বিধি প্রযোজ্য; তবে ওপি লিনাক্স / বাশ সম্পর্কে জিজ্ঞাসা করেছিল।
ট্রিপলি

1
perl -lne '}{ print $. 'একই কাজ করে।
টম ফেঞ্চ

1

আমি এটি করার জন্য একটি প্রোগ্রাম তৈরি করেছি (সহ node)

npm install gimme-lines
gimme-lines verbose --exclude=node_modules,public,vendor --exclude_extensions=html

https://github.com/danschumann/gimme-lines/tree/master


4
এটি কি বাগানের আগাছা মারতে F16 ব্যবহার করার মতো নয়?
বাটাল বুট্কাস

1

wc -l <filename>

এটি আপনাকে আউটপুটটিতে লাইন এবং ফাইলের সংখ্যা দেবে।

যেমন।

wc -l 24-11-2019-04-33-01-url_creator.log

আউটপুট

63 24-11-2019-04-33-01-url_creator.log

ব্যবহার

wc -l <filename>|cut -d\ -f 1

আউটপুট শুধুমাত্র লাইন সংখ্যা পেতে।

যেমন।

wc -l 24-11-2019-04-33-01-url_creator.log|cut -d\ -f 1

আউটপুট

63


গৃহীত (দশ বছর বয়সী) উত্তরটি পুনরাবৃত্তি করার সুবিধা কোথায়?
6:48

কারণ আমি এই থ্রেডে আউটপুটে কেবল লাইন নম্বর পেতে কমান্ডটি খুঁজে পাইনি।
হর্ষ সরোহি

এটি গৃহীত উত্তরের দ্বিতীয় উদাহরণ। wc -l < filename
jeb

ডাব্লুসি-এল <ফাইলের নাম> ফাইলের নাম এবং আউটপুটে লাইনের সংখ্যা দেয়।
হর্ষ সরোহি

না, wc -l < filenameকরতে ভিন্ন wc -l filename, প্রথম ব্যবহার ফেরৎ এবং তারপর সেখানে আউটপুটে কোন ফাইলের নাম, দেখানো মত নয় user85509 থেকে উত্তর
Jeb

1

এই ড্রপ-ইন পোর্টেবল শেল ফাংশন [ℹ]   একটি কবজির মতো কাজ করে। কেবলমাত্র আপনার .bashrcফাইলে নিম্নলিখিত স্নিপেট যুক্ত করুন (বা আপনার শেল পরিবেশের সমতুল্য)

# ---------------------------------------------
#  Count lines in a file
#
#  @1 = path to file
#
#  EXAMPLE USAGE: `count_file_lines $HISTFILE`
# ---------------------------------------------
count_file_lines() {
    local subj=$(wc -l $1)
    subj="${subj//$1/}"
    echo ${subj//[[:space:]]}
}

এটি ব্যাশ এবং zsh ছাড়াও সমস্ত POSIX- সম্মতিযুক্ত শাঁসের সাথে সম্পূর্ণ সুসংগত হওয়া উচিত ।

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