Eu tenho um script que gera o seguinte texto. Essa é a saída de um modem 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
Como posso remover o caractere de fim de linha de cada linha? Gostaria que a saída se parecesse com algo assim (Sim, é feio):
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
Eu tentei algumas soluções como esta, mas elas não funcionam:
# (This simply outputs the contents of the script, unmodified)
stefanl@hosta:~/Work/Cacti $ ./script | sed -e 's/$//'
Eu também tentei usar tr
. Eu estava esperando o seguinte comando para substituir cada caractere de nova linha pelo caractere de espaço. Isso pegaria as várias linhas e as combinaria em uma única linha longa. Em vez disso, isso exibe apenas a última linha de saída. Parece substituir cada linha subseqüente pela próxima linha de saída.
stefanl@hosta:~/Work/Cacti $ ./script | tr '\n' ' '
Data Rate: 2880 1024stefanl@hosta:~/Work/Cacti $
stefanl@hosta:~/Work/Cacti $
Atualização :
Após um exame mais aprofundado, parece que cada linha é precedida por um caractere de retorno. Isso aparece como ^M
ao usar less
. Então, eu adicionei duas tr
declarações. Um para excluir caracteres de nova linha, um para excluir o caractere de retorno.
./script | | tr -d '\n' | tr -d '\r'
tr '\n' ' '
etr -d '\n'
vão quebrar a linha de uma maneira estranha. Atualizei minha pergunta para mostrar os resultados. Então, talvez eu precise usartr
, mas só preciso descobrir como usá-lo corretamente.