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

سئل على ٢٩ يونيو ٢٠١٠  ·  تمت مشاهدة 1.5M مرة  ·  مصدر

Alucard picture
في ٢٩ يونيو ٢٠١٠

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

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

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

الإجابات

user85509 picture
في ٢٩ يونيو ٢٠١٠
2168

استخدم 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
Lauro Oliveira picture
في ٢٩ يونيو ٢٠١٠
145

لحساب جميع الأسطر ، استخدم:

$ wc -l file

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

$ grep -w "pattern" -c file  

أو استخدم -v لعكس المباراة:

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

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

John Kugelman picture
في ٢٩ يونيو ٢٠١٠
77
wc -l <file.txt>

أو

command | wc -l
ghostdog74 picture
في ٢٩ يونيو ٢٠١٠
52

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

wc -l file

يشمل البعض الآخر

awk 'END{print NR}' file

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

grep -c ".*" file
built1n picture
في ١ أبريل ٢٠١٣
28

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

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

storen picture
في ١٩ يناير ٢٠١٥
25

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

find . -type f -exec wc -l {} +
Vivin Paliath picture
في ٢٩ يونيو ٢٠١٠
22

استخدم wc :

wc -l <filename>
ggb667 picture
في ١٥ نوفمبر ٢٠١٣
16

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

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
decimal picture
في ٦ سبتمبر ٢٠١٣
9

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

nl filename

من man nl :

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

Buttle Butkus picture
في ١٩ يناير ٢٠١٥
8

كنت أستخدم هذا:

cat myfile.txt | wc -l

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

wc -l myfile.txt

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

wc -l < myfile.txt

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