Tôi có một đoạn script xuất ra văn bản sau. Đây là đầu ra từ 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
Làm cách nào để xóa ký tự cuối dòng cho mỗi dòng? Tôi muốn đầu ra trông giống như thế này (Vâng, nó xấu xí):
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
Tôi đã thử một số giải pháp như thế này, nhưng chúng không hoạt động:
# (This simply outputs the contents of the script, unmodified)
stefanl@hosta:~/Work/Cacti $ ./script | sed -e 's/$//'
Tôi cũng đã thử sử dụng tr
. Tôi đã mong đợi lệnh sau để thay thế từng ký tự dòng mới bằng ký tự khoảng trắng. Điều này sẽ lấy nhiều dòng và kết hợp chúng thành một dòng dài. Thay vào đó, điều này chỉ hiển thị dòng đầu ra cuối cùng. Nó dường như ghi đè lên mỗi dòng tiếp theo với dòng đầu ra tiếp theo.
stefanl@hosta:~/Work/Cacti $ ./script | tr '\n' ' '
Data Rate: 2880 1024stefanl@hosta:~/Work/Cacti $
stefanl@hosta:~/Work/Cacti $
Cập nhật :
Khi kiểm tra thêm, có vẻ như mỗi dòng được đi trước bởi một ký tự trở lại. Điều này hiển thị như ^M
khi sử dụng less
. Vì vậy, tôi đã thêm hai tr
tuyên bố. Một để xóa các ký tự dòng mới, một để xóa ký tự trả về.
./script | | tr -d '\n' | tr -d '\r'
tr '\n' ' '
vàtr -d '\n'
sẽ quấn dòng một cách kỳ lạ. Tôi cập nhật câu hỏi của tôi để hiển thị kết quả. Vì vậy, có lẽ tôi cần sử dụngtr
, nhưng tôi chỉ cần tìm ra cách sử dụng nó đúng cách.