У мене є сценарій, який видає наступний текст. Це вихід з модему 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, але мені просто потрібно розібратися, як правильно ним користуватися.