Mam skrypt, który wyświetla następujący tekst. Jest to wyjście z modemu 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
Jak mogę usunąć znak końca linii dla każdej linii? Chciałbym, aby wyjście wyglądało mniej więcej tak (tak, jest brzydkie):
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
Próbowałem takich rozwiązań, ale one nie działają:
# (This simply outputs the contents of the script, unmodified)
stefanl@hosta:~/Work/Cacti $ ./script | sed -e 's/$//'
Próbowałem też użyć tr
. Oczekiwałem, że następujące polecenie zastąpi każdy znak nowej linii spacją. To wziąłoby wiele linii i połączyłoby je w jedną długą pojedynczą linię. Zamiast tego wyświetla tylko ostatni wiersz wyniku. Wydaje się, że zastępuje każdy kolejny wiersz następnym wierszem wyniku.
stefanl@hosta:~/Work/Cacti $ ./script | tr '\n' ' '
Data Rate: 2880 1024stefanl@hosta:~/Work/Cacti $
stefanl@hosta:~/Work/Cacti $
Aktualizacja :
Po dalszym badaniu wygląda na to, że każda linia poprzedzona jest znakiem powrotu. To pokazuje, jak ^M
przy użyciu less
. Dodałem więc dwie tr
wypowiedzi. Jeden, aby usunąć znaki nowego wiersza, jeden, aby usunąć znak powrotu.
./script | | tr -d '\n' | tr -d '\r'
tr '\n' ' '
itr -d '\n'
dziwnie zawiną linię. Zaktualizowałem moje pytanie, aby pokazać wyniki. Więc może muszę użyćtr
, ale muszę tylko wymyślić, jak prawidłowo używać.