tr을 사용하여 일련의 8진수 문자를 제거하는 방법은 무엇입니까?

tr을 사용하여 일련의 8진수 문자를 제거하는 방법은 무엇입니까?

.dat 파일에서 이 항목을 제거하려고 합니다. --More--다음은 파일의 일부입니다. 예를 들면 다음과 같습니다.

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

16진수 텍스트 편집기를 사용하여 보이지 않는 문자를 식별했습니다. 여기에 이미지 설명을 입력하세요.

이제 전체 문자 시퀀스를 제거하려고 하는데 아직 성공하지 못했습니다.

내 시도는 다음과 같습니다.

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

도움이 필요하세요?

감사해요.

vi에서는 다음과 같습니다.

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

답변1

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

  • s/ */../개인적으로 선호하는 것은 글을 쓰는 것이 아닌데, s/[ ]*/../스페이스/탭일 때는 *당연히 왼쪽에 있는 원자에 붙어 있기 때문입니다.
  • GNU sed육각형 매칭 시설 포함\x16진수주문하다.

답변2

가장 간단한 해결책은 다르게 생각하는 것입니다. 원하지 않는 문자를 정의하려고 하지 말고 대신 원하는 문자를 정의하고 다른 것은 제거하십시오.

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

--More--이렇게 하면 공백, 문자 또는 숫자가 아닌 0개 이상의 문자가 뒤에 오는 문자열이 제거됩니다 . 데이터에 따라 이 설정을 약간 조정해야 할 수도 있습니다(예: 허용 _또는 필요한 모든 것).

이제 질문의 첫 번째 문자에 --More--백스페이스 문자(Octal 010, Hex 7, ASCII \b)가 포함되어 있는 것 같으므로 다음과 같이 할 수도 있습니다.

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

--More--또는 다음 항목도 제거하세요.

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

관련 정보