كيفية تعديل إخراج grep:الحصول على كل نتيجة في كل سطر

StackOverflow https://stackoverflow.com//questions/23012019

  •  21-12-2019
  •  | 
  •  

سؤال

أنا أستخدم grep للبحث في نمط من خلال ملف موجود في var

الكود هنا:

result=`grep "$pattern" $file`
echo $result

نتيجة:أ) بعض الكلمات ب) بعض الخطوط ج) بعض الأرقام

طباعة النتيجة على سطر واحد.أرغب في الحصول على نتائج واحدة للخط أ

يحب:

A) somewords
B) somelines
C) somenumbers

كيف يمكنني؟

شكرًا

هل كانت مفيدة؟

المحلول

فقط أقتبس الخاص بك $result متغير وسيتم الحفاظ على الأسطر الجديدة:

result=$(grep "$pattern" $file)
echo "$result"

السبب وراء نجاح ذلك هو أنه عندما تقوم بتضمين شيء ما بين علامات اقتباس مزدوجة في bash، يتم التعامل مع كل شيء داخل علامات الاقتباس هذه ككلمة واحدة.وهذا يعني أنه لن يخضع تقسيم الكلمة.أنظر أيضا: http://mywiki.wooledge.org/WordSplitting

بشكل فعال عند الاستخدام $result, ، يتم توسيعه إلى هذا (نظرًا لأنه يتم التعامل مع الأسطر الجديدة كمحددات):

echo A) somewords B) somelines C) somenumbers

عندما تستخدم "$result" وتجنب تقسيم الكلمة، يتم توسيعها إلى هذا:

echo "A) somewords
B) somelines
C) somenumbers"

مذكرة إضافية:استخدام $(...) بدلاً من العلامات الخلفية تعمل على تحسين إمكانية القراءة كما أنها أكثر قابلية للنقل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top