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