Linux преобразовать столбец в строку
Обновлено: 07.07.2024
Предположим, у нас есть текстовый файл с именем distros.txt со следующим:
Archlinux
Debian
Ubuntu
Kaos
мягкая фетровая шляпа
Slackware
папуасских
И мы хотим превратить это в:
Archlinux, Debian, Ubuntu, Каос, Fedora, Slackware, Gentoo
Для этого мы будем использовать для цикла y un эхо -n :
for i in `< distros.txt`; do echo -n $" ";done; echo ""
Готово, вот и трюк
Это покажет нам желаемый результат в терминале, если, с другой стороны, мы хотим, чтобы он был сохранен в другом файле .txt, мы перенаправляем вывод:
for i in `< distros.txt`; do echo -n $" ";done; echo "" > distros-nuevas.txt
Ну ничего, надеюсь, вы сочтете это полезным. Действительно, чтобы уточнить, что это также можно сделать с помощью регулярных выражений, я просто не знаю, как . но с помощью регулярных выражений вы можете делать почти все, хахаха.
Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.
Полный путь к статье: Из Linux » Учебники / Руководства / Советы » Bash: преобразование столбца текста в строку
Вы можете быть заинтересованы
15 комментариев, оставьте свой
Оставьте свой комментарий Отменить ответ
кот distros.txt | xargs -n 100
Если в .odt у меня есть 2 столбца на каждой странице, они читаются так:
стр.1
столбец 1 столбец 2
стр.2
столбец 3 столбец 4
и так далее
Как мне расположить каждый столбец ниже другого?
столбец 1
столбец 2
столбец 3
столбец 4
и так далее
Если вы хотите разделить табуляцией:
Вы пишете: 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!
Я использовал sed, awk, cut, sort, uniq, короче крем, но никогда не обращал внимания на paste, спасибо за то, что показал, на что он способен. Slds.
cat file.txt | xargs
Я всегда использую excel для этого [транспонирования] . очень полезно
кот distros.txt | tr «\ n» »«
Ха-ха-ха в каждом комментарии, разные способы сделать то же самое!
А если бы все было наоборот, как бы это было? То есть преобразование строки слов, разделенных пробелами, в столбец.
Тоже легко, на этот раз с awk.
Предполагается, что поля разделены табуляцией или пробелами, что является наиболее распространенным (если это запятые или что-то еще, это необходимо учитывать и указывать), и что теперь файл содержит: archlinux debian ubuntu kaos fedora slackware gentoo
Поскольку awk напрямую предоставляет нам нужное поле, мы должны заставить его итеративно показывать нам одно за другим до конца. Здесь 7 полей, потому что это значение NF (количество полей). Мы устанавливаем счетчик i = 1, чтобы он показывал нам первое поле ($ 1), и мы должны увеличить его на одну единицу (используя i ++), не превышая последнее поле (NF).
Самый практичный, простой для запоминания способ, который работает для обоих органов чувств:
кот distros.txt | tr '\ n' '' ← Горизонтальный вывод stdout (уже обсуждалось выше)
кот distros.txt | tr '' '\ n' ← Вертикальный вывод стандартного вывода
Определенно решение Этеменанки, в обоих направлениях, подходит, если вас интересует только простое преобразование из строки в столбец и наоборот.
Я работаю над вспомогательным скриптом в bash. В промежуточном шаге у меня данные в виде столбика.
Но для дальнейшей работы мне нужно преобразoвать их в строчку с запятыми.
1656027, 1656028, 1656033, 1656034, 1656050, 1656054, 1656055
Подскажите как это удобнее сделать. awk -F «,» ’’и tr ‘,’ ’ ’ пробывала, но не получилось. Спасибо!
Раз ты такой умный, что же не предложил ничего. А туда дорогу я сама найду!
Как не предложил, предложил же, и абсолютно правильно.
sed-ом заменить конец строки на ', '
а потом им же убрать последний ', '
vel ★★★★★ ( 23.01.20 14:16:24 )Последнее исправление: vel 23.01.20 14:16:45 (всего исправлений: 1)
tr [code] cat file-stolbik | tr ‘\015\012’ ’ ,’ [/code]
sed [code] echo sed -e 's/$/,/g' file-stolbik [/code]
Пардон (не та разметка) tr
Ну не знаю, просят же на bash, а там это элегантнее и уж для начинающих точно понятнее будет:
vodz ★★★★★ ( 23.01.20 14:24:30 )Последнее исправление: vodz 23.01.20 14:25:08 (всего исправлений: 1)
для начинающих точно понятнее
знатный тролль, однака.
Детка, я в той теме отметился. копипастить для тебя? Да ну нах
Спасибо ребята! Но я так поняла что без промежуточной записи в файл мне никак.Так может мне просто в /tmp записать файл и оттуда уже с помощью «read line» считывать построчно?
Мысль была такая: для цикла for мне нужны значения переменной для дальнейшей передачи их в следующую команду. У меня есть список JobID из базы данных Slurm и я хочу им соотнести конкретного пользователя.Нужно для статистики.
я так поняла что без промежуточной записи в файл мне никак
Можно и так и эдак. Зависит от того, откуда данные пришли и куда уходят.
Пример от vodz даёт как побочный эффект нормальный полноценный массив, по которому можно ходить через цикл for как в более обычных языках программирования.
В Linux существует множество способов преобразования строки в верхний или нижний регистр.
Наиболее часто используемыми командами для изменения регистра являются tr, sed и awk.
В Bash 4 есть определенные символы, которые позволяют преобразовать регистр строки.
В этом руководстве мы узнаем, как преобразовать строку в верхний и нижний регистр в системах Linux.
Использование команды TR для преобразования регистра
Команда tr используется для перевода и удаления символов.
С ее помощью можно преобразовать строку или содержимое файла в верхний или нижний регистр.
Она очень часто используется в скриптах bash.
Чтобы преобразовать любую строку из верхнего регистра в нижний, введите:
Чтобы преобразовать любую строку из нижнего регистра в верхний, введите:
Например, можно использовать команду tr в скриптах bash для преобразования строки в нижний регистр
Чтобы преобразовать содержимое текстового файла с именем file.txt из нижнего регистра в верхний, выполните следующие действия.
И наоборот, чтобы преобразовать содержимое файла в нижний регистр, введите
Использование SED для преобразования регистра
Команда Sed используется в Linux для разбора и преобразования текста.
С помощью sed можно преобразовать регистр строки.
Используя sed, чтобы преобразовать строку в верхний регистр, введите
Теперь перейдем на строчные буквы, используя следующую команду:
Чтобы преобразовать текст из файла в верхний регистр с помощью инструмента командной строки sed, мы используем следующий шаблон:
Использование AWK для преобразования регистра
Команда awk использует функции tolower и toupper для преобразования регистра строки.
Чтобы преобразовать строку в верхний регистр, введите
Чтобы преобразовать все содержимое текстового файла с именем file.txt в верхний регистр, используйте:
Аналогично для преобразования в нижний регистр используйте:
Преобразование регистра с помощью символов в Bash
Начиная с версии 4 Bash, появилась новая возможность преобразования регистра строки.
- Преобразует первый символ любой строки в верхний регистр ^
- Преобразует всю строку в верхний регистр ^^
- Преобразует первый символ строки в строчный регистр ,
- Преобразует всю строку в строчный регистр. ,,
Символы Bash для преобразования регистра строк
Пример 1
Преобразование первого символа строки с помощью символа ^:
Пример 2:
Преобразование всей переменной bash в верхний регистр с помощью символа ^^:
Пример 3:
Преобразование в нижний регистр с помощью символа .
Заключение
В этой статье мы узнали, как конвертировать в прописные или строчные буквы в Linux.
Читайте также: