我有一个脚本,输出以下文本。这是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,但是我只需要弄清楚如何正确使用它。