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





bash script (16)


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

cat /etc/fstab | wc -l

التي من شأنها أن توفر بعد ذلك. من الخطوط فقط.

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

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

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




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




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

cat -n <filename>

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




wc -l <file.txt>

أو

command | wc -l



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



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

cat *.txt | wc -l

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







أعلم أن هذا شيئًا قديمًا ولكن لا يزال: عدد الأعداد المفلترة

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

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



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



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

cat myfile.txt | wc -l

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

wc -l myfile.txt

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

wc -l < myfile.txt

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




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

$ wc -l file

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

$ grep -w "pattern" -c file  

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

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

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




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

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



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

nl filename

من man nl :

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




استخدم wc :

wc -l <filename>



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

لعرض عدد الأسطر فقط




أفضل القيام بما يلي أحادي الخطوط ، في تنسيق متوافق مع shell POSIX :

$ [ -f "/$DIR/$FILE" ] || echo "$FILE NOT FOUND"

$ [ -f "/$DIR/$FILE" ] && echo "$FILE FOUND"

بالنسبة إلى أمرين ، مثلما يمكنني فعله في نص برمجي:

$  [ -f "/$DIR/$FILE" ] || { echo "$FILE NOT FOUND" ; exit 1 ;}

بمجرد أن بدأت في القيام بذلك ، نادراً ما أستخدم تركيب الجملة المكتوب بالكامل!





linux bash command-line scripting