Ich habe ein Skript, das den folgenden Text ausgibt. Dies ist die Ausgabe eines Netopia 2210-02 ADSL2- Modems.
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
Wie kann ich das Zeilenendezeichen für jede Zeile entfernen? Ich möchte, dass die Ausgabe so aussieht (Ja, es ist hässlich):
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
Ich habe einige Lösungen wie diese ausprobiert, aber sie funktionieren nicht:
# (This simply outputs the contents of the script, unmodified)
stefanl@hosta:~/Work/Cacti $ ./script | sed -e 's/$//'
Ich habe auch versucht mit tr
. Ich hatte erwartet, dass der folgende Befehl jedes Zeilenumbruchzeichen durch das Leerzeichen ersetzt. Dies würde die mehreren Zeilen nehmen und sie zu einer langen einzelnen Zeile kombinieren. Stattdessen wird nur die letzte Ausgabezeile angezeigt. Es scheint jede nachfolgende Zeile mit der nächsten Ausgabezeile zu überschreiben.
stefanl@hosta:~/Work/Cacti $ ./script | tr '\n' ' '
Data Rate: 2880 1024stefanl@hosta:~/Work/Cacti $
stefanl@hosta:~/Work/Cacti $
Update :
Bei weiterer Prüfung sieht es so aus, als ob jeder Zeile ein Rückkehrzeichen vorangestellt ist. Dies zeigt sich wie ^M
bei der Verwendung less
. Also habe ich zwei tr
Aussagen hinzugefügt . Eines zum Löschen von Zeilenumbrüchen und eines zum Löschen des Rückgabewerts.
./script | | tr -d '\n' | tr -d '\r'
quelle
tr '\n' ' '
undtr -d '\n'
wickeln die Linie auf seltsame Weise. Ich habe meine Frage aktualisiert, um die Ergebnisse anzuzeigen. Vielleicht muss ich es benutzentr
, aber ich muss nur herausfinden, wie ich es richtig benutze.tr '\n' ' '
, das Zeilenumbruchzeichen zu entfernen und es durch ein Leerzeichen zu ersetzen, und daher eine lange Zeile zu haben.Außerdem
tr
einige andere Methoden, die Sie verwenden könnenawk
Schale
sed
quelle
Verwendung
tr -s '\n'
Sequenzen von wiederholten Zeilenende- Zeichen zu ersetzen mit einem einzigen Auftreten Neuen - Zeile.Beispiel:
(siehe
man tr
)quelle
Zum Entfernen von Zeilenumbrüchen
tr -d '\n' < file
. Um jedoch alle Zeilen zu verbinden, ist daspaste -sd '\0' file
.tr -d '\n'
Erzeugt keine Textausgabe, da die eine Zeile nicht mit einem Zeilenumbruchzeichen abgeschlossen wird.Um alle CR-Zeichen zu entfernen, haben Sie folgende Möglichkeiten:
So entfernen Sie nur die CR-Zeichen, die sich am Ende der Zeilen befinden:
Oder
awk
für alles verwenden:Oder verwenden Sie
dos2unix
:quelle