У меня есть скрипт, который выводит следующий текст. Это вывод модема 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'
tr '\n' ' '
и другоеtr -d '\n'
обернет линию странным образом. Я обновил свой вопрос, чтобы показать результаты. Так что, может быть, мне нужно использоватьtr
, но мне просто нужно выяснить, как использовать его правильно.