Bash: قم بتحويل عمود من النص إلى صف

افترض أن لدينا ملفًا نصيًا يسمى توزيعات.txt كالآتي:

آرش لينكس
ديبيان
أوبونتو
كي أي أو إس
فيدورا
سلاكوير
جنتو

ونريد تحويله إلى:

أركلينكس ديبيان أوبونتو كاوس فيدورا سلاكوير جنتو

لتحقيق ذلك سوف نستخدم ملف لحلقة وعلى صدى ن :

for i in `< distros.txt`; do echo -n ${i}" ";done; echo ""

تم ، هذه هي الحيلة 🙂

سيُظهر لنا هذا النتيجة المرجوة في الجهاز ، إذا أردنا من ناحية أخرى حفظها في ملف .txt آخر ، فإننا نعيد توجيه الإخراج:

for i in `< distros.txt`; do echo -n ${i}" ";done; echo "" > distros-nuevas.txt

وفويلا 🙂

حسنًا ، لا شيء ، أتمنى أن تجده مفيدًا. صالح لتوضيح أنه يمكن إجراؤه أيضًا باستخدام التعبيرات العادية ، فأنا لا أعرف كيف ... ولكن ، باستخدام التعبيرات العادية ، يمكنك فعل كل شيء تقريبًا هههه.


15 تعليقات ، اترك لك

اترك تعليقك

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها ب *

*

*

  1. المسؤول عن البيانات: ميغيل أنخيل جاتون
  2. الغرض من البيانات: التحكم في الرسائل الاقتحامية ، وإدارة التعليقات.
  3. الشرعية: موافقتك
  4. توصيل البيانات: لن يتم إرسال البيانات إلى أطراف ثالثة إلا بموجب التزام قانوني.
  5. تخزين البيانات: قاعدة البيانات التي تستضيفها شركة Occentus Networks (الاتحاد الأوروبي)
  6. الحقوق: يمكنك في أي وقت تقييد معلوماتك واستعادتها وحذفها.

  1.   خوسيه ريكاردو قال

    أسهل:

    توزيعات القط.txt | اكسارج - ن 100

  2.   ¿ قال

    إذا كان لدي عمودان في كل صفحة في ملف odt ، فسيتم قراءتهما على النحو التالي:

    ص .1
    العمود 1 العمود 2
    ص .2
    العمود 3 العمود 4
    وما إلى ذلك.

    كيف أحصل على كل عمود أسفل الآخر؟
    العمود 1
    العمود 2
    العمود 3
    العمود 4
    وما إلى ذلك.

  3.   juant قال

    أسهل بكثير:

    إذا كنت تريد فصلها بعلامات تبويب:
    تكتب: لصق-s distros.txt
    يمكنك الحصول على: archlinux debian ubuntu kaos fedora slackware gentoo

    إذا كنت تريد الفصل بينها بمسافات:
    تكتب: لصق -s -d »» distros.txt
    يمكنك الحصول على: archlinux debian ubuntu kaos fedora slackware gentoo

    إذا كنت تريد الفصل بينها بفاصلات:
    تكتب: لصق -s -d ، distros.txt
    تحصل على: archlinux و debian و ubuntu و kaos و fedora و slackware و gentoo

    باستخدام عجينة ، قطة ، awk وأصدقاء آخرين ، بقليل من البراعة ، يمكنك تكوين العديد من التركيبات المفيدة دون تعقيد حياتك.

    دع كل شيء يستمر بشكل رائع ، تهانينا على الجائزة في Portalprogramas!

    1.    صائد قال

      لقد كنت أستخدم sed ، awk ، cut ، Sort ، uniq ، باختصار الكريم ، لكنني لم أهتم أبدًا باللصق ، شكرًا لإظهار ما يمكن أن يفعله. سلدس.

  4.   تبريس قال

    cat file.txt | xargs

    الربح.

  5.   كريستيانش قال

    دائمًا ما ينتهي بي الأمر باستخدام برنامج excel لهذا [تبديل] ... مفيد جدًا

  6.   برونو كاسيو قال

    صيغة أخرى:

    cat distros.txt | tr «\ n» »«

  7.   خواكين قال

    هههههه في كل تعليق طريقة مختلفة لفعل الشيء نفسه!

  8.   خوسيه جي دي إف قال

    وللقيام بالعكس ، كيف سيكون الأمر؟ أي تحويل سطر من الكلمات مفصولة بمسافات إلى عمود.

    1.    juant قال

      سهل أيضًا ، هذه المرة مع awk.
      بافتراض أن الحقول مفصولة بعلامات تبويب أو مسافات ، وهي الأكثر شيوعًا (إذا كانت بفاصلات أو أي شيء آخر ، فيجب أخذها في الاعتبار والإشارة إليها) ، وأن الملف يحتوي الآن على: archlinux debian ubuntu kaos fedora slackware gentoo

      نظرًا لأن awk يعطينا المجال الذي نريده مباشرةً ، علينا أن نجعله يظهر لنا واحدًا تلو الآخر بشكل متكرر حتى النهاية. هناك 7 حقول لأن هذه هي قيمة NF (عدد الحقول). قمنا بتعيين العداد i = 1 ، بحيث يظهر لنا الحقل الأول ($ 1) وعلينا أن نجعله يزيد بمقدار وحدة واحدة (باستخدام i ++) دون تجاوز الحقل الأخير (NF).

      awk '{for (i = 1؛ i <= NF؛ i ++) {print $ i}}' distros.txt

      1.    إتيمينانكي قال

        الطريقة الأكثر عملية ، والتي يسهل تذكرها والتي تعمل لكلا الحواس هي:
        cat distros.txt | tr '\ n' '' ← إخراج stdout أفقي (سبق مناقشته أعلاه)
        cat distros.txt | tr '' '\ n' ← إخراج stdout عمودي

        تحيات!

    2.    juant قال

      بالتأكيد حل Etemenanki ، في كلا الاتجاهين ، جيد إذا كنت مهتمًا فقط بتحويل بسيط من صف إلى عمود والعكس صحيح.

    3.    خوسيه جي دي إف قال

      شكرا لكم جميعا على الاستجابة. سأضعهم موضع التنفيذ في السيناريو التالي الذي أفعله.

      تحية.

  9.   قط قال

    وإذا كنت تفعل فقط:
    صدى $ (cat distros.txt)

  10.   أنسون رودريغيز قال

    أسهل:
    awk '{printf $ 0 ″ «}' distros.txt