wie verwende ich tr, um eine Oktalzeichenfolge zu löschen?

wie verwende ich tr, um eine Oktalzeichenfolge zu löschen?

Ich versuche Folgendes --More--aus einer DAT-Datei zu löschen. Dies ist beispielsweise ein Fragment dieser Datei:

Device ID: N7K-LAN(JAF1651ANDL)
  IP address: 148.228.4.192
Interface: GigabitEthernet0/1,  Port ID (outgoing port): Ethernet7/19
Device ID: CIRC_INF_IDF1
  IP address: 148.228.107.252
Interface: FastEthernet0/20,  Port ID (outgoing port): GigabitEthernet0/1
  IP address: 148.228.107.252
Device ID: CIRC_INF_IDF3
  IP address: 148.228.107.250
 --More--         Interface: FastEthernet0/23,  Port ID (outgoing port): GigabitEthernet0/1
  IP address: 148.228.107.250
Device ID: CIRC_INF_IDF2
  IP address: 148.228.107.251
Interface: FastEthernet0/22,  Port ID (outgoing port): GigabitEthernet0/1
  IP address: 148.228.107.251
Device ID: SEP1CAA0711CFBE
 --More--           IP address: 148.228.199.103
Interface: FastEthernet0/2,  Port ID (outgoing port): Port 1
Device ID: SEP1CAA0711CD67
  IP address: 148.228.199.154
Interface: FastEthernet0/5,  Port ID (outgoing port): Port 1

Mit einem Hex-Texteditor habe ich die nicht sichtbaren Zeichen identifiziert Bildbeschreibung hier eingeben

Jetzt versuche ich die ganze Zeichenfolge zu löschen, aber es gelingt mir nicht,

das sind meine Versuche:

tr -d --More--           < tabladetallada.dat >temporaltabla.dat

tr -d '\015' '\012' '\20' '\055' '\055' '\115' < tabladetallada.dat >temporaltabla.dat

sed 's/--More--␣//' tabladetallada.dat>tabladetallada2.dat

tr -d ' --More-- ^H^H^H^H^H^H^H^H^H        ^H^H^H^H^H^H^H^H^H' < tabladetallada.dat >temporaltabla.dat

Irgendeine Hilfe?

Danke.

so sieht es in vi aus:

Device ID: N7K-LAN(JAF1651ANDL)^M
  IP address: 148.228.4.192^M
Interface: GigabitEthernet0/1,  Port ID (outgoing port): Ethernet7/19^M
Device ID: CIRC_INF_IDF1^M
  IP address: 148.228.107.252^M
Interface: FastEthernet0/20,  Port ID (outgoing port): GigabitEthernet0/1^M
  IP address: 148.228.107.252^M
Device ID: CIRC_INF_IDF3^M
  IP address: 148.228.107.250^M
 --More-- ^H^H^H^H^H^H^H^H^H        ^H^H^H^H^H^H^H^H^HInterface: FastEthernet0/23,  Port ID (outgoing port): GigabitEthernet0/1^M
  IP address: 148.228.107.250^M
Device ID: CIRC_INF_IDF2^M
  IP address: 148.228.107.251^M
Interface: FastEthernet0/22,  Port ID (outgoing port): GigabitEthernet0/1^M
  IP address: 148.228.107.251^M
Device ID: SEP1CAA0711CFBE^M
 --More-- ^H^H^H^H^H^H^H^H^H        ^H^H^H^H^H^H^H^H^H  IP address: 148.228.199.103^M
Interface: FastEthernet0/2,  Port ID (outgoing port): Port 1^M
Device ID: SEP1CAA0711CD67^M
  IP address: 148.228.199.154^M
Interface: FastEthernet0/5,  Port ID (outgoing port): Port 1^M
Device ID: SEP1CAA0711D11A^M
  IP address: 148.228.199.4^M
Interface: FastEthernet0/10,  Port ID (outgoing port): Port 1^M
Device ID: SEPece1a985bb74^M
  IP address: 148.228.199.21^M
Interface: FastEthernet0/12,  Port ID (outgoing port): Port 1^M
Device ID: SEPf84f5794c5c4^M
  IP address: 148.228.199.23^M
Interface: FastEthernet0/11,  Port ID (outgoing port): Port 1^M
Device ID: SEP1CAA0711D276^M
  IP address: 148.228.199.102^M
 --More-- ^H^H^H^H^H^H^H^H^H        ^H^H^H^H^H^H^H^H^HInterface: FastEthernet0/9,  Port ID (outgoing port): Port 1^M
Device ID: SEPece1a985b5d5^M
  IP address: 148.228.199.24^M
Interface: FastEthernet0/14,  Port ID (outgoing port): Port 1^M
Device ID: SEP1CAA0711497C^M
Interface: FastEthernet0/4,  Port ID (outgoing port): Port 1^M
Device ID: SEPf84f5794c8c2^M
  IP address: 148.228.199.22^M
Interface: FastEthernet0/3,  Port ID (outgoing port): Port 1^M
Device ID: Circulo_Camaras4^M
 --More-- ^H^H^H^H^H^H^H^H^H        ^H^H^H^H^H^H^H^H^H  IP address: 148.228.101.5^M
Interface: FastEthernet0/24,  Port ID (outgoing port): GigabitEthernet1/0/24^M
  IP address: 148.228.101.5^M

Antwort1

sed -e 's/^[ ]*--More--.*\x8//' -e 's/\xD$//'

  • Anstelle des Schreibens s/ */../bevorzuge ich persönlich die Option, s/[ ]*/../da dadurch die *Anfügung an das Atom links davon sichtbar wird, wenn es sich um ein Leerzeichen/eine TAB-Taste handelt.
  • GNU sedverfügt über die Hex-Matching-Funktion mit dem\xHexadezimalzifferReihenfolge.

Antwort2

Die einfachste Lösung besteht darin, andersherum zu denken. Anstatt zu versuchen, die Zeichen zu definieren, die Sie nicht möchten, definieren Sie die Zeichen, die Sie möchten, und entfernen Sie alles andere:

sed 's/--More--[^ a-zA-Z0-9]*//' file 

Dadurch werden die Zeichenfolge --More--und 0 oder mehr Zeichen danach gelöscht, die kein Leerzeichen, kein Buchstabe und keine Zahl sind. Abhängig von Ihren Daten müssen Sie diesen Satz möglicherweise ein wenig anpassen (z. B. auch zulassen _oder was auch immer Sie benötigen).

Nun --More--scheint das erste in Ihrer Frage Backspace-Zeichen (Oktal 010, Hex 7, ASCII) zu enthalten \b, daher könnten Sie auch einfach Folgendes tun:

perl -pe 's/[\b]//g' file

Oder um es --More--ebenfalls zu entfernen:

perl -pe 's/--More--[\b]+//g' file

verwandte Informationen