Linux как убрать перенос строк

Содержание
  1. Как отключить перенос строки в терминале?
  2. Linux как убрать перенос строк
  3. Команда tr и ее синтаксис
  4. 1) Заменить все строчные буквы на заглавные
  5. 2) Удаление символов с помощью tr
  6. 3) Удаление ила змена символов НЕ в наборе
  7. 4) Замена пробелов на табуляцию
  8. 5) Удаление повторений символов
  9. 6) Заменить символы из набора на перенос строки
  10. 7) Генерируем список уникальных слов из файла
  11. 8) Кодируем символы с помошью ROT
  12. Вывод
  13. unixforum.org
  14. sed, помогите удалить лишние переносы (окружение: UnixUtils)
  15. sed, помогите удалить лишние переносы
  16. Re: sed, помогите удалить лишние переносы
  17. Re: sed, помогите удалить лишние переносы
  18. Re: sed, помогите удалить лишние переносы
  19. Re: sed, помогите удалить лишние переносы
  20. Re: sed, помогите удалить лишние переносы
  21. Re: sed, помогите удалить лишние переносы
  22. Re: sed, помогите удалить лишние переносы
  23. Re: sed, помогите удалить лишние переносы
  24. Re: sed, помогите удалить лишние переносы
  25. Re: sed, помогите удалить лишние переносы
  26. Re: sed, помогите удалить лишние переносы
  27. Re: sed, помогите удалить лишние переносы
  28. Re: sed, помогите удалить лишние переносы
  29. Re: sed, помогите удалить лишние переносы
  30. Re: sed, помогите удалить лишние переносы
  31. Re: sed, помогите удалить лишние переносы
  32. Re: sed, помогите удалить лишние переносы
  33. Re: sed, помогите удалить лишние переносы
  34. Re: sed, помогите удалить лишние переносы
  35. Re: sed, помогите удалить лишние переносы
  36. Re: sed, помогите удалить лишние переносы
  37. Re: sed, помогите удалить лишние переносы
  38. Re: sed, помогите удалить лишние переносы
  39. Re: sed, помогите удалить лишние переносы
  40. Re: sed, помогите удалить лишние переносы
  41. Re: sed, помогите удалить лишние переносы

Как отключить перенос строки в терминале?

Мне нужно просматривать большие файлы журналов с помощью оболочки Bash. Я использовал less для открытия файлов, но так как строки слишком длинные, происходит какая-то перенос строки / слова.

Поскольку файлы представляют собой журналы Log4J, и в начале каждой строки есть шаблон, обернутые строки затрудняют анализ выходных данных, поэтому я начал использовать метод, less -S который прерывает длинные строки.

Но теперь мне нужно использовать tail -f , и это также строка переносит вывод. Можно ли отключить перенос строки в оболочке bash для всех команд?

Примечание: есть ответ на другой вопрос, в котором упоминается escape-последовательность echo -ne ‘\e[?7l’ , но он не работает на bash.

Вы действительно нуждаетесь tail -f или хотели бы что-то less +F сделать Поскольку кажется, что вы все еще хотите интерактивный пейджер, мне кажется, что было бы намного легче придерживаться его, less чем переопределять его самостоятельно.

Последнее замечание: вы рассматривали tail -f file | less ?

less -S +F filename

  • Нажмите, Ctrl c чтобы остановить хвост, и теперь вы можете перемещаться влево и вправо с помощью клавиш курсора.
  • Нажмите, Shift f чтобы возобновить хвостохранилище
  • Нажмите Ctrl c , q чтобы выйти

Нашел хороший ответ от суперпользователя , который работает из коробки gnome-terminal и, вероятно, для других терминалов:

Предположим, вы определили COLUMNS переменную, вы можете выполнить

в противном случае $COLUMNS подставьте ширину столбцов терминала, полученную с помощью stty -a .

Вы можете отключить перенос строк для less , tail и любой другой команды под солнцем Linux с:

Чтобы восстановить перенос строки, используйте:

Эмулятор терминала терминатора (http://software.jessies.org/terminator/) позволяет не переносить длинные строки и имеет горизонтальную прокрутку (но написана на Java).

Два хороших ответа / примеры здесь

Одно предостережение: по крайней мере, на встроенном терминале на моем Mac Cut, кажется, не очень хорошо обрабатывает символы табуляции. Кажется, он отображает их, например, с 8 пробелами, но просто вычисляет их как 4 пробела в ширину или что-то в этом роде. Другими словами, если ваш терминал имеет ширину 80 символов и ваш вывод содержит несколько вкладок на строку, вы должны установить ширину, может быть, 60 или что-то подобное. YMMV.

Читайте также:  Показать первые строк linux

Используйте ниже варианты с less . Это отключит перенос слов и сохранит цвета текста, если указано.

less -SR +F filename

На этой странице приведено несколько примеров с использованием -f . из моих тестов это не работает должным образом, если вам действительно нужен конвейер (например, если вам нужно передать что-то большее, например, grep), вы можете использовать что-то вроде :

возможно, не самый лучший по производительности, но работает . иначе, если не требуется дополнительная передача, вы можете использовать что-то другое, например:

Есть много комментариев, которые отклоняются от вопроса. Вопрос ОП был

Но теперь мне нужно использовать tail -f , и это также строка переносит вывод. Можно ли отключить перенос строки в оболочке bash для всех команд?

Некоторые комментарии были сделаны по поводу функции автоматического переноса, заявив, что она есть не во всех терминалах. Может быть. Но (кроме терминатора , разработчики которого не описывают описание терминала ), все приведенные примеры были xterm, rxvt, а также похожими или потомками. Все это связано.

+aw Вариант в xterm соответствует autoWrap ресурсу. Обращаясь к руководству, он говорит, что

что, безусловно, не «зависит от вашего выбора терминала», поскольку любой терминал с VT100-совместимостью поддерживает эту функцию. xterm и rxvt делают это, например. Другие делают так же.

Вопрос о том, будет ли эта функция полезна для OP, спорен. Подавление переноса строк — это только один аспект проблемы:

  • Оболочка знает ширину терминала, но это можно переопределить, установив COLUMNS «большое» значение.
  • Конечно, это означает, что приложения будут тратить много времени на написание правого поля (а некоторые, если его неправильно, все равно начнут новую строку).
  • OP, вероятно, предполагал, что приложение будет прокручивать влево / вправо, чтобы использовать широкий терминал. (терминатор делает это — частично — но другие его недостатки отменяют это, за исключением тех, кто использует терминал только для вывода cat файла журнала на экран).
  • На самом деле OP ищет набор инструментов, которые могут отключить перенос строк, особенно для просмотра файлов журналов. Если терминал работает достаточно хорошо для общего использования, это не имеет отношения к выбору инструментов, которые используются в терминале.

Есть пейджеры, которые могут делать то, что нужно, например, многозадачный, который перечисляет в своих функциях

Перенос строки можно отключить, после чего можно перемещаться влево / вправо с помощью клавиш курсора.

Будучи основанным на ncurses, он должен работать на любом из указанных терминалов.

Источник

Linux как убрать перенос строк

Команда tr (translate) используется в Linux в основном для преобразования и удаления символов. Она часто находит применение в скриптах обработки текста. Ее можно использовать для преобразования верхнего регистра в нижний, сжатия повторяющихся символов и удаления символов.

Команда tr требует два набора символов для преобразований, а также может использоваться с другими командами, использующими каналы (пайпы) Unix для расширенных преобразований.

В этой статье мы узнаем, как использовать команду tr в операционных системах Linux и рассмотрим некоторые примеры.

Команда tr и ее синтаксис

Ниже приведен синтаксис команды tr. Требуется, как минимум, два набора символов и опции.

SET1 и SET2 это группы символов. are a group of characters. Необходимо перечислить необходимые символы или указать последовательность.

\NNN -> восмеричные (OCT) символы NNN (1 до 3 цифр)

\\ -> обратный слеш (экранированный)

Читайте также:  Надо ли автоматическое обновление windows

\n -> новая строка (new line)

\r -> перенос строки (return)

\t -> табуляция (horizontal tab)

[:alnum:] -> все буквы и цифры

[:alpha:] -> все буквы

[:blank:] -> все пробелы

[:cntrl:] -> все управляющие символы (control)

[:digit:] -> все цифры

[:lower:] -> все буквы в нижнем регистре (строчные)

[:upper:] -> все буквы в верхнем регистре (заглавные)

Примеры использования команды tr:

Вот некоторые опции:

-c , -C , —complement -> удалить все символы, кроме тех, что в первом наборе
-d , —delete -> удалить символы из первого набора
-s , —squeeze-repeats -> заменять набор символов, которые повторяются, из указанных в последнем наборе знаков

1) Заменить все строчные буквы на заглавные

Мы можем использовать tr для преобразования нижнего регистра в верхний или наоборот.

Просто используем наборы [:lower:] [:upper:] или «a-z» «A-Z» для замены всех символов.

Вот пример, как преобразовать в Linux с помощью команды tr все строчные буквы в заглавные:

А сейчас сделаем замену из файла input.txt

Как мы видим, в файле ничего не изменилось, осталось все строчными буквами. Чтобы изменения были в файле, на необходимо перевести вывод в новый файл. Например, в output.txt

Кстати, в команде sed есть опция y которая делает то же самое (sed ‘y/SET1/SET2’)

2) Удаление символов с помощью tr

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

Следующая команда удалит все символы из этого набора ‘aei’.

Следующая команда удалит все цифры в тексте. Будем использовать набор [:digit:] , чтобы определить все цифры.

А вот пример команд, которыми можно удалить переносы на новые строки

3) Удаление ила змена символов НЕ в наборе

С помощью параметра -c Вы можете сказать tr заменить все символы, которые Вы не указали в наборе. Приведем пример.

А вот пример удаления, просто укажем опцию -d и только один набор (символы которого удалять НЕ надо, а остальные удалить)

4) Замена пробелов на табуляцию

Для указания пробелов используем — [:space:] , а для табуляции — \t.

5) Удаление повторений символов

Это делает параметр -s . Рассмотрим пример удаления повторов знаков.

Или заменим повторения на символ решетки

6) Заменить символы из набора на перенос строки

Сделаем так, чтобы все буквы были заменены на перенос новой строки:

7) Генерируем список уникальных слов из файла

Это иногда очень полезная команда, когда необходимо определить количество повторений и вывести уникальные слова из файла:

8) Кодируем символы с помошью ROT

ROT (Caesar Cipher) — это тип криптографии, в котором кодирование выполняется путем перемещения букв в алфавите к его следующей букве.

Давайте проверим, как использовать tr для шифрования.

В следующем примере каждый символ в первом наборе будет заменен соответствующим символом во втором наборе.

Первый набор [a-z] (это значит abcdefghijklmnopqrstuvwxyz). Второй набор [n-za-m] (который содержит pqrstuvwxyzabcdefghijklmn).

Простая команда для демонстрации вышеуказанной теории:

Полезно при шифровании электронных адресов:

Вывод

tr — это очень мощная команда линукс при использовании пайпов Unix и очень часто используется в скриптах. Дополнительную информацию об этой утилите всегда можно найти в man.

Если у Вас есть какие-либо дополнения, не стесняйтесь пишите в комментариях.

Источник

unixforum.org

Форум для пользователей UNIX-подобных систем

  • Темы без ответов
  • Активные темы
  • Поиск
  • Статус форума

sed, помогите удалить лишние переносы (окружение: UnixUtils)

Модератор: /dev/random

sed, помогите удалить лишние переносы

Сообщение uptime » 24.06.2010 18:48

Re: sed, помогите удалить лишние переносы

Re: sed, помогите удалить лишние переносы

Сообщение t.t » 24.06.2010 19:13

Читайте также:  Escape from tarkov linux 2021

Re: sed, помогите удалить лишние переносы

Сообщение Encore » 24.06.2010 19:16

upd. что й то я не в дугу совсем про переносы не прочитал..

Re: sed, помогите удалить лишние переносы

1. Зачем обратно менять все пробелы на \n? 🙂 Видимо, там должно быть 2 пробела.
2. Так это ж sed весь файл в память засосет.

Re: sed, помогите удалить лишние переносы

Сообщение t.t » 24.06.2010 19:54

1. Зачем обратно менять все пробелы на \n? Видимо, там должно быть 2 пробела.
2. Так это ж sed весь файл в память засосет.

Re: sed, помогите удалить лишние переносы

Re: sed, помогите удалить лишние переносы

Сообщение t.t » 24.06.2010 20:03

Re: sed, помогите удалить лишние переносы

Сообщение Nazyvaemykh » 24.06.2010 20:27

Re: sed, помогите удалить лишние переносы

Сообщение t.t » 24.06.2010 20:42

Re: sed, помогите удалить лишние переносы

Сообщение Nazyvaemykh » 24.06.2010 20:58

У меня в браузере отображается с пробелами (с точностью до пробелов решение правильное).

Я лишь хотел показать, что относительно простое решение можно получить использованием sed-команды ‘N’.

Re: sed, помогите удалить лишние переносы

Сообщение uptime » 25.06.2010 12:36

Re: sed, помогите удалить лишние переносы

Сообщение uptime » 25.06.2010 12:42

так не работала. Мой вариант:

Re: sed, помогите удалить лишние переносы

Сообщение /dev/random » 25.06.2010 12:46

Re: sed, помогите удалить лишние переносы

Сообщение uptime » 25.06.2010 12:49

Re: sed, помогите удалить лишние переносы

Сообщение t.t » 25.06.2010 13:20

Re: sed, помогите удалить лишние переносы

Загрузите кусок файла в виде приложения (attachment), а то такое чувство, что там куча каких-то странных невидимых символов.

Если в файле есть trailing whitespaces, то приведенный мной скрипт работает коряво:

Если его слегка подрихтовать на этот счет, то:

Re: sed, помогите удалить лишние переносы

Сообщение uptime » 25.06.2010 15:19

уже лучше. Но там какая то аццкая смесь пробелов и табов. Во избежание порчи прикрепляю исходный файл. (Переименовал в .txt)

мой последний вариант:

Re: sed, помогите удалить лишние переносы

Сообщение /dev/random » 25.06.2010 15:23

Оу. Так это в винде, что ли? Там CRLF!

Upd: блин, торможу. Сказано же, UnxUtils. Значит, да, в винде.

Re: sed, помогите удалить лишние переносы

Сообщение Subj » 25.06.2010 15:23

Я бы примерно так сделал:

cat file | sed -n «/7/p» | while read i1; read i2; do echo $i1 $i2 ; done

cat file | sed -n ‘s/[\t ]\+//;/7/p’ | sed ‘$!N;s/\n/ /’

Насчет венды — хз )

Re: sed, помогите удалить лишние переносы

Сообщение uptime » 25.06.2010 15:56

Re: sed, помогите удалить лишние переносы

Сообщение uptime » 25.06.2010 16:02

Я бы примерно так сделал:

cat file | sed -n «/6/p» | while read i1; read i2; do echo $i1 $i2 ; done

Re: sed, помогите удалить лишние переносы

Сообщение /dev/random » 25.06.2010 16:06

Re: sed, помогите удалить лишние переносы

Сообщение uptime » 25.06.2010 16:25

ура! товарищи! яйца sh подействовал ))
всех откликнувшихся готов угостить

Re: sed, помогите удалить лишние переносы

Сообщение Subj » 25.06.2010 16:33

Re: sed, помогите удалить лишние переносы

Сообщение Nazyvaemykh » 25.06.2010 17:41

Ну, вот поправленный немного вариант чисто с sed (пробовал только в GNU\Linux окружении, с приведенным примером работает правильно):

Re: sed, помогите удалить лишние переносы

Сообщение uptime » 28.06.2010 11:39

Ну, вот поправленный немного вариант чисто с sed (пробовал только в GNU\Linux окружении, с приведенным примером работает правильно):

Заменил одинарные кавычки на двойные. Результат:

Источник

Оцените статью