Bash: ستونی از متن را به یک ردیف تبدیل کنید

فرض کنید ما یک فایل متنی به نام داریم distros.txt با موارد زیر:

archlinux
دبیان
اوبونتو
آشوب
کلاه نمدی مردانه
نرم افزار
جنتو

و ما می خواهیم آن را به موارد زیر تبدیل کنیم:

archlinux debian ubuntu kaos fedora slackware gentoo

برای دستیابی به این هدف از a برای حلقه و پژواک -n :

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

و voila

خوب هیچ چیز ، امیدوارم که برای شما مفید باشد. معتبر است روشن شود که این کار را می توان با عبارات منظم نیز انجام داد ، من فقط نمی دانم چگونه ... اما ، با عبارات منظم می توانید تقریباً همه کارها را انجام دهید هااها.


محتوای مقاله به اصول ما پیوست اخلاق تحریریه. برای گزارش یک خطا کلیک کنید اینجا.

15 نظر ، نظر خود را بگذارید

نظر خود را بگذارید

نشانی ایمیل شما منتشر نخواهد شد.

*

*

  1. مسئول داده ها: میگل آنخل گاتون
  2. هدف از داده ها: کنترل هرزنامه ، مدیریت نظرات.
  3. مشروعیت: رضایت شما
  4. ارتباط داده ها: داده ها به اشخاص ثالث منتقل نمی شوند مگر با تعهد قانونی.
  5. ذخیره سازی داده ها: پایگاه داده به میزبانی شبکه های Occentus (EU)
  6. حقوق: در هر زمان می توانید اطلاعات خود را محدود ، بازیابی و حذف کنید.

  1.   خوزه ریکاردو dijo

    آسان تر:

    distros.txt گربه | xargs -n 100

  2.   ¿ dijo

    اگر در یک .odt در هر صفحه 2 ستون داشته باشم ، آنها اینگونه می خوانند:

    ص 1
    col.1 col.2
    ص 2
    col.3 col.4
    و غیره.

    چگونه می توانم هر ستون را زیر ستون دیگر قرار دهم؟
    ستون 1
    ستون 2
    ستون 3
    ستون 4
    و غیره.

  3.   جوان dijo

    بسیار ساده تر:

    اگر می خواهید با زبانه ها جدا شود:
    شما می نویسید: paste -s distros.txt
    دریافت می کنید: archlinux debian ubuntu kaos fedora slackware gentoo

    اگر می خواهید با فاصله از هم جدا شود:
    شما می نویسید: paste -s -d »» distros.txt
    دریافت می کنید: archlinux debian ubuntu kaos fedora slackware gentoo

    اگر می خواهید با کاما جدا شود:
    شما می نویسید: paste -s -d، distros.txt
    شما دریافت می کنید: archlinux ، debian ، ubuntu ، kaos ، fedora ، slackware ، gentoo

    با خمیر ، گربه ، اوک و سایر دوستان ، با کمی هوشمندی می توانید بسیاری از ترکیبات مفید را بدون پیچیدگی زندگی خود انجام دهید.

    بگذارید همه چیز عالی ادامه پیدا کند ، جایزه را در Portalprogramas تبریک می گوییم!

    1.    خشونت dijo

      من از sed ، awk ، cut ، مرتب سازی ، uniq ، به طور خلاصه از کرم استفاده کرده ام ، اما هرگز توجهی به چسباندن نکرده ام ، متشکرم برای نشان دادن آنچه می تواند انجام دهد. قدیمی ها

  4.   تبریس dijo

    file file.txt | گارگ

    سود.

  5.   کریستیان dijo

    من همیشه در نهایت از excel برای این [استفاده از ترانزیست کردن] استفاده می کنم ... بسیار مفید

  6.   برونو کاسکیو dijo

    نوع دیگر:

    distros.txt گربه | tr «\ n» »«

  7.   خواکین dijo

    HaHaHa در هر نظر ، روش متفاوتی برای انجام همان کار!

  8.   خوزه GDF dijo

    و برای انجام عکس آن ، چگونه خواهد بود؟ یعنی تبدیل یک خط از کلمات جدا شده با فاصله به یک ستون.

    1.    جوان dijo

      خیلی راحت ، این بار با awk.
      با فرض اینکه فیلدها با زبانه یا فاصله از هم جدا شوند ، این متداول ترین حالت است (اگر با کاما یا چیز دیگری باشد ، باید در نظر گرفته شود و نشان داده شود) ، و این پرونده اکنون شامل: archlinux debian ubuntu kaos fedora slackware gentoo

      از آنجا که awk مستقیماً زمینه مورد نظر ما را در اختیار ما قرار می دهد ، باید کاری کنیم که تا آخر یک به یک به ما نشان دهد. 7 قسمت وجود دارد زیرا این مقدار NF (تعداد فیلدها) است. شمارنده i = 1 را تنظیم می کنیم ، به این ترتیب که اولین فیلد (1 $) را به ما نشان می دهد و مجبور می شویم بدون اینکه از آخرین قسمت (NF) بیشتر شود ، یک واحد افزایش یابد (با استفاده از i ++).

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

      1.    اتمنانکی dijo

        عملی ترین راه ، به راحتی به خاطر سپرده شدن و برای هر دو حس مفید است:
        distros.txt گربه | tr '\ n' '' output خروجی افقی stdout (قبلاً در بالا بحث شد)
        distros.txt گربه | tr '' '\ n' output خروجی عمودی stdout

        سلام!

    2.    جوان dijo

      قطعاً راه حل Etemenanki ، هر دو راه ، اگر فقط به یک تغییر شکل ساده از سطر به ستون و بالعکس علاقه دارید ، خوب است.

    3.    خوزه GDF dijo

      تشکر از همه شما برای پاسخ. من آنها را در متن بعدی که انجام می دهم عملی می کنم.

      سلام.

  9.   گاتو dijo

    و اگر فقط انجام دهید:
    echo $ (گربه distros.txt)

  10.   آنسون رودریگز dijo

    حتی راحت تر:
    awk '{printf $ 0 ″ «}} distros.txt

bool (درست)