Tengo un script que genera el siguiente texto. Esta es la salida de un módem ADSL2 Netopia 2210-02 .
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
¿Cómo puedo eliminar el carácter de fin de línea para cada línea? Me gustaría que la salida se vea así (Sí, es feo):
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
Intenté algunas soluciones como esta, pero no funcionan:
# (This simply outputs the contents of the script, unmodified)
stefanl@hosta:~/Work/Cacti $ ./script | sed -e 's/$//'
También intenté usar tr
. Esperaba que el siguiente comando reemplazara cada carácter de nueva línea con el carácter de espacio. Esto tomaría las líneas múltiples y las combinaría en una sola línea larga. En cambio, esto solo muestra la última línea de salida. Parece sobrescribir cada línea posterior con la siguiente línea de salida.
stefanl@hosta:~/Work/Cacti $ ./script | tr '\n' ' '
Data Rate: 2880 1024stefanl@hosta:~/Work/Cacti $
stefanl@hosta:~/Work/Cacti $
Actualización :
Tras un examen más detallado, parece que cada línea está precedida por un carácter de retorno. Esto aparece como ^M
cuando se usa less
. Entonces, agregué dos tr
declaraciones. Uno para eliminar caracteres de nueva línea, uno para eliminar el carácter de retorno.
./script | | tr -d '\n' | tr -d '\r'
tr '\n' ' '
ytr -d '\n'
envolverán la línea de una manera extraña. Actualicé mi pregunta para mostrar los resultados. Entonces, tal vez necesito usarlotr
, pero solo necesito descubrir cómo usarlo correctamente.