У меня есть скрипт, который выводит следующий текст. Это вывод модема 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
, но мне просто нужно выяснить, как использовать его правильно.tr '\n' ' '
удалить символ новой строки и заменить его пробелом, и, следовательно, иметь одну длинную строку.кроме того
tr
, некоторые другие методы, которые вы можете использоватьAWK
ракушка
СЭД
источник
Используется
tr -s '\n'
для замены последовательностей повторяющихся символов новой строки на единственное вхождение новой строки.Пример:
(см.
man tr
)источник
Чтобы удалить символы новой строки, это
tr -d '\n' < file
. Тем не менее, чтобы объединить все линии, это такpaste -sd '\0' file
.tr -d '\n'
производит нетекстовый вывод, поскольку он не завершает одну строку символом новой строки.Чтобы удалить все символы CR, вы можете сделать:
Чтобы удалить только символы CR, которые находятся в конце строк:
Или используйте
awk
для всего:Или используйте
dos2unix
(который удалит эти конечные CR, а также исправит некоторые другие проблемы с текстовыми файлами из ОС Microsoft):источник