ฉันมีสคริปต์ที่แสดงผลข้อความต่อไปนี้ นี่คือผลลัพธ์จากโมเด็มNetSL 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
แต่ฉันต้องหาวิธีใช้ให้ถูกต้อง