افترض أن لدينا ملفًا نصيًا يسمى توزيعات.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
وفويلا 🙂
حسنًا ، لا شيء ، أتمنى أن تجده مفيدًا. صالح لتوضيح أنه يمكن إجراؤه أيضًا باستخدام التعبيرات العادية ، فأنا لا أعرف كيف ... ولكن ، باستخدام التعبيرات العادية ، يمكنك فعل كل شيء تقريبًا هههه.
أسهل:
توزيعات القط.txt | اكسارج - ن 100
إذا كان لدي عمودان في كل صفحة في ملف odt ، فسيتم قراءتهما على النحو التالي:
ص .1
العمود 1 العمود 2
ص .2
العمود 3 العمود 4
وما إلى ذلك.
كيف أحصل على كل عمود أسفل الآخر؟
العمود 1
العمود 2
العمود 3
العمود 4
وما إلى ذلك.
أسهل بكثير:
إذا كنت تريد فصلها بعلامات تبويب:
تكتب: لصق-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!
لقد كنت أستخدم sed ، awk ، cut ، Sort ، uniq ، باختصار الكريم ، لكنني لم أهتم أبدًا باللصق ، شكرًا لإظهار ما يمكن أن يفعله. سلدس.
cat file.txt | xargs
الربح.
دائمًا ما ينتهي بي الأمر باستخدام برنامج excel لهذا [تبديل] ... مفيد جدًا
صيغة أخرى:
cat distros.txt | tr «\ n» »«
هههههه في كل تعليق طريقة مختلفة لفعل الشيء نفسه!
وللقيام بالعكس ، كيف سيكون الأمر؟ أي تحويل سطر من الكلمات مفصولة بمسافات إلى عمود.
سهل أيضًا ، هذه المرة مع 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
الطريقة الأكثر عملية ، والتي يسهل تذكرها والتي تعمل لكلا الحواس هي:
cat distros.txt | tr '\ n' '' ← إخراج stdout أفقي (سبق مناقشته أعلاه)
cat distros.txt | tr '' '\ n' ← إخراج stdout عمودي
تحيات!
بالتأكيد حل Etemenanki ، في كلا الاتجاهين ، جيد إذا كنت مهتمًا فقط بتحويل بسيط من صف إلى عمود والعكس صحيح.
شكرا لكم جميعا على الاستجابة. سأضعهم موضع التنفيذ في السيناريو التالي الذي أفعله.
تحية.
وإذا كنت تفعل فقط:
صدى $ (cat distros.txt)
أسهل:
awk '{printf $ 0 ″ «}' distros.txt