Удалить символы строки строки из stdout? Несколько строк в одну строку

У меня есть сценарий, который выводит следующий текст. Это результат работы модема Netopia 2210-02 ADSL2 .

ADSL Line State: Up ADSL Startup Attempts: 1 ADSL Modulation: DMT ADSL Data Path: Fast Datapump Version: DSP 7.2.3.0, HAL 7.2.1.0 SNR Margin: 8.20 9.00 dB Line Attenuation: 57.50 31.00 dB Output Power: 17.09 12.34 dBm Errored Seconds: 0 0 Loss of Signal: 0 476 Loss of Frame: 0 0 CRC Errors: 57921 416 Data Rate: 2880 1024 

Как удалить концевой символ для каждой строки? Я хотел бы, чтобы результат выглядел примерно так (да, это уродливо):

 ADSL Line State: Up ADSL Startup Attempts: 1 ADSL Modulation: DMT ADSL Data Path: Fast Datapump Version: DSP 7.2.3.0, HAL 7.2.1.0 SNR Margin: 8.20 9.00 dB Line Attenuation: 57.50 31.00 dB Output Power: 17.09 12.34 dBm Errored Seconds: 0 0 Loss of Signal: 0 476 Loss of Frame: 0 0 CRC Errors: 57921 416 Data Rate: 2880 1024 

Я пробовал некоторые решения вроде этого, но они не работают:

 # (This simply outputs the contents of the script, unmodified) stefanl@hosta:~/Work/Cacti $ ./script | sed -e 's/$//' 

Я также пытался использовать tr . Я ожидал следующую команду, чтобы заменить каждый символ новой строки символом пробела. Это займет несколько строк и объединит их в одну длинную одну строку. Вместо этого отображается только последняя строка вывода. Кажется, что каждая последующая строка переписывает следующую строку вывода.

 stefanl@hosta:~/Work/Cacti $ ./script | tr '\n' ' ' Data Rate: 2880 1024stefanl@hosta:~/Work/Cacti $ stefanl@hosta:~/Work/Cacti $ 

Обновление :

При дальнейшем рассмотрении кажется, что каждой строке предшествует символ возврата. Это отображается как ^M при использовании less . Итак, я добавил два оператора tr . Один для удаления символов новой строки, один для удаления возвращаемого символа.

 ./script | | tr -d '\n' | tr -d '\r' 

2 Solutions collect form web for “Удалить символы строки строки из stdout? Несколько строк в одну строку”

sed не будет работать (легко), потому что он работает по строкам по одному; вы могли бы это сделать, но это потребовало бы копирования всего ввода в буфер удержания

tr фактически должен работать так, как вы его вставили; вы уверены, что строки новой строки \n s? Вы можете немного упростить его, удалив новые строки вместо преобразования их в пробелы:

 tr -d '\n' 

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

AWK

 awk '1' ORS= file 

оболочка

 while read -r line; do printf "%s " "$line"; done <file 

СЕПГ

 sed -e ':a' -e 'N;s/\n/ /;ba' file 
  • Что означает -s и ] в условии if в bash?
  • Пропустить stdin в качестве аргумента для скрипта bash
  • Как создать сценарий bash, который суммирует любое количество аргументов командной строки?
  • получить первый аргумент CLI после опций в shell scipt
  • ссылочная переменная оболочки $ COLUMNS из сценария bash
  • Как избежать пробелов и т. Д. В переданной переменной, для системного вызова cp в awk
  • Количество элементов в массиве bash, где имя массива является динамическим (т.е. хранится в переменной)
  • Выбор несуществующих файлов с подстановочным знаком / регулярным выражением
  • Как работает sudo (помимо setuid)?
  • Выполните условие IF из результата, который мы получаем с удаленного сервера
  • Выход из функции bash, а не терминала
  • Interesting Posts

    Почему я не могу преобразовать UTF-8 в MS-ANSI с помощью iconv?

    Существуют ли версии Unix, которые не имеют awk при установке по умолчанию?

    Существуют ли какие-либо утилиты, которые поддерживают umount2 (2) MNT_EXPIRE?

    Как установить загруженное программное обеспечение с помощью менеджеров пакетов? (Ubuntu Linux)

    переменная sed в запросе?

    ln -s $ SOURCE / * except – с помощью find?

    Я установил Mint 18 на свой ноутбук HP NV79, я не могу использовать коврик для мыши

    Могу ли я получить файл .config из файла vmlinuz?

    Как связать окна в Debian Gnome?

    VIM – изменить время ожидания комбинированных ключевых карт

    Нельзя вводить заглавные буквы с помощью клавиши shift

    Исправлено ли исправление shellshock bash базовыми инструментами командной строки, такими как echo и cat?

    Ошибка CentOS 7 i386 Netinstall: «Ошибка настройки базового хранилища»

    Использование sys-сервера без пароля на CentOS 6

    Mutt показывает скремблированные символы в белом пространстве после смены папки

    Linux и Unix - лучшая ОС в мире.