it-swarm.asia

كيف نحسب الخطوط في وثيقة؟

لدي خطوط مثل هذه ، وأريد أن أعرف عدد الخطوط التي لدي بالفعل ...

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

هل هناك طريقة لحسابهم جميعا باستخدام أوامر لينكس؟

899
Alucard

استخدم 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
1691
user85509

لحساب جميع الخطوط استخدام:

$ wc -l file

لتصفية وحساب الأسطر التي تستخدم النمط فقط:

$ grep -w "pattern" -c file  

أو استخدم -v لعكس التطابق:

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

اطلع على صفحة grep man لإلقاء نظرة على -e و -i و -x args ...

130
Lauro Oliveira
wc -l <file.txt>

أو

command | wc -l
67
John Kugelman

هناك عدة طرق. باستخدام wc واحد.

wc -l file

وتشمل الآخرين

awk 'END{print NR}' file

sed -n '$=' file (GNU sed)

grep -c ".*" file
42
ghostdog74

الأداة wc هي "عداد الكلمات" في أنظمة التشغيل UNIX و UNIX ، كما يمكنك استخدامها لحساب الأسطر في ملف ، بإضافة خيار -l ، لذلك سوف يحسب wc -l foo عدد الأسطر في foo. يمكنك أيضًا إخراج الإخراج من برنامج مثل هذا: ls -l | wc -l ، والذي سيخبرك بعدد الملفات الموجودة في الدليل الحالي.

24
theunamedguy

إذا كنت تريد التحقق من السطر الكلي لجميع الملفات الموجودة في الدليل ، فيمكنك استخدام find و wc:

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

استخدم wc:

wc -l <filename>
21
Vivin Paliath

إذا كان كل ما تريده هو عدد الأسطر (وليس عدد الأسطر واسم الملف الغبي الذي يعود):

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
13
ggb667

لقد كنت تستخدم هذا:

cat myfile.txt | wc -l

أنا أفضل من الإجابة المقبولة لأنها لا تطبع اسم الملف ، وليس عليك استخدام awk لإصلاح ذلك. الإجابة المقبولة:

wc -l myfile.txt

لكنني أعتقد أن أفضل واحد هو إجابة GGB667:

wc -l < myfile.txt

ربما سأستخدم ذلك من الآن فصاعدًا. انها أقصر قليلا من طريقي. أضع طريقتي القديمة في القيام بذلك في حالة تفضيل أي شخص. الإخراج هو نفسه مع هاتين الطريقتين.

7
Buttle Butkus

استخدم nl مثل هذا:

nl filename

من man nl:

اكتب كل ملف إلى الإخراج القياسي ، مع إضافة أرقام الأسطر. مع عدم وجود FILE ، أو عندما يكون FILE - ، اقرأ الإدخال القياسي.

6
decimal

لقد رأيت هذا السؤال بينما كنت أبحث عن طريقة لحساب خطوط متعددة للملفات ، لذلك إذا كنت تريد حساب أسطر ملفات متعددة من ملف .txt ، يمكنك القيام بذلك ،

cat *.txt | wc -l

سيتم تشغيله أيضًا على ملف txt واحد ؛)

5
talsibony

أعلاه هي الطريقة المفضلة ولكن يمكن أن يساعد الأمر "cat" أيضًا:

cat -n <filename>

سوف تظهر لك محتوى كامل من الملف مع أرقام الأسطر.

5
Yogi
wc -l file.txt | cut -f3 -d" "

إرجاع عدد الخطوط فقط

4
Umur Kontacı
cat file.log | wc -l | grep -oE '\d+'
  • grep -oE '\d+': من أجل إرجاع أرقام الأرقامفقط.
4
AechoLiu

يجب أن تكون إعادة التوجيه/توصيل إخراج الملف إلى wc -l كافية ، مثل ما يلي:

cat /etc/fstab | wc -l

والتي من شأنها أن توفر ثم لا. الخطوط فقط.

3
tk3000

أو قم بحساب جميع الأسطر في الدلائل الفرعية بنمط اسم الملف (مثل ملفات السجل ذات الطوابع الزمنية في اسم الملف):

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

أعلم أن هذا هو قديم ولكن لا يزال: عدد الخطوط التي تمت تصفيتها

ملفي يبدو مثل:

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

OR

grep -c "OK" filename
2
Diego Fernando Villarroel Diaz

لقد قمت للتو بإنشاء برنامج للقيام بذلك (مع node)

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

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

1
Funkodebat

عد عدد الخطوط وتخزين النتيجة في استخدام متغير هذا الأمر:

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

1
Konstantin F

كما قال آخرون ، wc -l هو الحل الأفضل ، ولكن للرجوع إليها في المستقبل ، يمكنك استخدام Perl:

Perl -lne 'END { print $. }'

يحتوي $. على رقم السطر وسيتم تنفيذ كتلة END في نهاية البرنامج النصي.

0
Majid Azimi