Ho uno script che produce il seguente testo. Questo è l'output di un modem 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
Come posso rimuovere il carattere di fine riga per ogni riga? Vorrei che l'output fosse simile a questo (Sì, è brutto):
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
Ho provato alcune soluzioni come questa, ma non funzionano:
# (This simply outputs the contents of the script, unmodified)
stefanl@hosta:~/Work/Cacti $ ./script | sed -e 's/$//'
Ho anche provato a usare tr
. Mi aspettavo il seguente comando per sostituire ogni carattere di nuova riga con il carattere di spazio. Ciò prenderebbe le linee multiple e le combinerebbe in un'unica lunga linea. Invece, mostra solo l'ultima riga di output. Sembra sovrascrivere ogni riga successiva con la riga successiva di output.
stefanl@hosta:~/Work/Cacti $ ./script | tr '\n' ' '
Data Rate: 2880 1024stefanl@hosta:~/Work/Cacti $
stefanl@hosta:~/Work/Cacti $
Aggiornamento :
Dopo un ulteriore esame, sembra che ogni riga sia preceduta da un carattere di ritorno. Questo si presenta come ^M
quando si usa less
. Quindi, ho aggiunto due tr
dichiarazioni. Uno per eliminare i caratteri di nuova riga, uno per eliminare il carattere di ritorno.
./script | | tr -d '\n' | tr -d '\r'
tr '\n' ' '
etr -d '\n'
avvolgeranno la linea in un modo strano. Ho aggiornato la mia domanda per mostrare i risultati. Quindi, forse ho bisogno di usaretr
, ma ho solo bisogno di capire come usare usarlo correttamente.