
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
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 sed
verfügt über die Hex-Matching-Funktion mit dem\x
HexadezimalzifferReihenfolge.
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