Удалить символы строки строки из 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 
  • Как обрабатывать цикл while-do и сортировать результат с итерацией
  • Как проверить, существует ли несколько файлов?
  • Как использовать ssh в функции (bash)?
  • Переменная как команда
  • Сценарий оболочки не работает через работу cron
  • сопоставление sed шаблонов с удалением по строке
  • как редактировать двуязычный текст с помощью скриптов?
  • Обработка ввода для команды чтения как самой команды
  • Как я могу передать позиционный параметр, сценарий bash требует, чтобы он был недоступен?
  • Косая черта, не обнаруженная в команде «grep»
  • Состояние внутри строки в Bashscript
  • Interesting Posts

    Программа Shell для отображения текстовых файлов с линейкой столбцов

    Как остановить ssh-сервер на arch linux

    Ограничить доступ приложений к определенным ресурсам

    Проверьте, исправлен ли файл или папка

    Эквивалент Unix / Linux для проверки обхода байпаса Windows

    Как работать с `locate`?

    Kali Linux: при установке назначенный пароль root не может войти в систему – неверный пароль

    Существуют ли какие-либо свежие версии Firefox для Scientific-Linux , доступные для печати?

    почему я не вижу интерфейс в Linux Debian

    Какая часть недавней исправления TCP-буфера для Linux также применяется к SCTP?

    Если все текстовые файлы имеют какой-то суффикс (например, * .txt, * .conf)

    Сравнение текстовых файлов с использованием Bash и AWK

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

    Что означает «005» в выводе команды linux od?

    Почему использование параметра «автозапуск» xRDP не может подключиться к серверу VNC?

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