Bash: преобразование столбца текста в строку

Предположим, у нас есть текстовый файл с именем дистрибутивы.txt со следующим:

Archlinux
Debian
Ubuntu
Kaos
мягкая фетровая шляпа
Slackware
папуасских

И мы хотим превратить это в:

Archlinux, Debian, Ubuntu, Каос, Fedora, Slackware, Gentoo

Для этого мы будем использовать для цикла y un эхо -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

И вуаля

Ну ничего, надеюсь, вы сочтете это полезным. Действительно, чтобы уточнить, что это также можно сделать с помощью регулярных выражений, я просто не знаю, как ... но с помощью регулярных выражений вы можете делать почти все, хахаха.


Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: Мигель Анхель Гатон
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.

  1.   Хосе Рикардо сказал

    Полегче:

    кот distros.txt | xargs -n 100

  2.   ¿ сказал

    Если в .odt у меня есть 2 столбца на каждой странице, они читаются так:

    стр.1
    столбец 1 столбец 2
    стр.2
    столбец 3 столбец 4
    и так далее

    Как мне расположить каждый столбец ниже другого?
    столбец 1
    столбец 2
    столбец 3
    столбец 4
    и так далее

  3.   juant сказал

    Намного легче:

    Если вы хотите разделить табуляцией:
    Вы пишете: 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

    С paste, cat, awk и другими друзьями, проявив немного изобретательности, вы можете составить множество полезных комбинаций, не усложняя себе жизнь.

    Пусть все будет отлично, поздравляем с наградой в Portalprogramas!

    1.    Данхантер сказал

      Я использовал sed, awk, cut, sort, uniq, короче крем, но никогда не обращал внимания на paste, спасибо за то, что показал, на что он способен. Slds.

  4.   Tabris сказал

    cat file.txt | xargs

    прибыли.

  5.   Cristianhcd сказал

    Я всегда использую excel для этого [транспонирования] ... очень полезно

  6.   Бруно Кашио сказал

    Другой вариант:

    кот 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.    Этеменанки сказал

        Самый практичный, простой для запоминания способ, который работает для обоих органов чувств:
        кот distros.txt | tr '\ n' '' ← Горизонтальный вывод stdout (уже обсуждалось выше)
        кот distros.txt | tr '' '\ n' ← Вертикальный вывод стандартного вывода

        Привет!

    2.    juant сказал

      Определенно решение Этеменанки, в обоих направлениях, подходит, если вас интересует только простое преобразование из строки в столбец и наоборот.

    3.    Хосе ГДФ сказал

      Спасибо всем за ответ. Я использую их на практике в следующем сценарии.

      Привет.

  9.   кот сказал

    И если вы только делаете:
    echo $ (cat distros.txt)

  10.   Энсон Родригес сказал

    Еще проще:
    awk '{printf $ 0 ″ «}» distros.txt