我有一个输出以下文本的脚本。这是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'
sed
(它很容易)无法工作,因为它一次只能在一行上运行;您可以执行此操作,但这将涉及将整个输入复制到保持缓冲区中
tr
实际上应该按照您粘贴的方式工作;您确定换行符是\n
s吗?您可以通过删除换行符而不是将它们转换为空格来稍微简化一下:
tr -d '\n'
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句