awk 스크립트는 텍스트 파일을 수동으로 편집하는 경우에만 작동합니다.

awk 스크립트는 텍스트 파일을 수동으로 편집하는 경우에만 작동합니다.

awk터미널에서 얻은 스위치의 CDP 이웃 정보가 포함된 텍스트 파일로 정보를 구성하는 데 사용한 파일은 다음과 같습니다.

Device ID Local Intrfce
BIOTERIO Gig 1/0/6
N7K-LAN(JAF1651ANDL)
Gig 1/0/1 145
LAB_PESADO Gig 1/0/11
Arquitectura_Salones
Gig 1/0/9 147
CIVIL_253 Gig 1/0/4
Arquitectura Gig 1/0/3
ING_CIVIL_DIR Gig 1/0/10
ING_CIVIL Gig 1/0/7
Ingenieria_Posgrado
Gig 1/0/8 132
Biblio_Barragan Gig 1/0/2
Electronica_Edif_3
Gig 1/0/5 173
Barragan_3750>exit
Connection closed by foreign host.
]0;cesar@cesar-HP-Pavilion-15-Note

나는 그것이 다음과 같이 보이기를 원합니다 :

Device ID Local Intrfce
BIOTERIO Gig 1/0/6
N7K-LAN(JAF1651ANDL) Gig 1/0/1 145
LAB_PESADO Gig 1/0/11
Arquitectura_Salones Gig 1/0/9 147
CIVIL_253 Gig 1/0/4
Arquitectura Gig 1/0/3
ING_CIVIL_DIR Gig 1/0/10
ING_CIVIL Gig 1/0/7
Ingenieria_Posgrado Gig 1/0/8 132
Biblio_Barragan Gig 1/0/2
Electronica_Edif_3 Gig 1/0/5 173
Barragan_3750>exit Connection closed by foreign host.
]0;cesar@cesar-HP-Pavilion-15-Note

내가 사용하는 awk 스크립트는 다음과 같습니다.

awk '{printf "%s%s", $0, (length($1) > 16) ? OFS : ORS}' CDPyPuerto.dat > TablaCDP.dat

첫 번째 필드가 16자를 초과하는 줄을 찾아 줄 바꿈을 공백으로 바꿉니다.

awk 스크립트를 실행하면 결과는 다음과 같습니다.

Device ID Local Intrfce 
BIOTERIO Gig 1/0/6 
N7K-LAN(JAF1651ANDL)
  Gig 1/0/1 172 
LAB_PESADO Gig 1/0/11 
Arquitectura_Salones
  Gig 1/0/9 176 
CIVIL_253 Gig 1/0/4 
Arquitectura Gig 1/0/3 
ING_CIVIL_DIR Gig 1/0/10 
ING_CIVIL Gig 1/0/7 
Ingenieria_Posgrado
  Gig 1/0/8 159 
Biblio_Barragan Gig 1/0/2 
Electronica_Edif_3
  Gig 1/0/5 141 
Barragan_3750>exit
Connection closed by foreign host.

]0;cesar@cesar-HP-Pavilion-15-Note

나는 알아차렸다gedit로 원본 텍스트 파일(CDPyPuertos.dat)을 열고 파일 끝에 공백을 추가하거나 일부 문자를 변경하는 등의 내용을 편집하면 awk 스크립트가 제대로 작동합니다., 그러나 이 모든 것은 Expect 스크립트에 있으므로 자동으로 수행되어야 합니다. 또한 파일 형식을 ascci에서 UTF-8로 변경해 보았지만 작동하지 않습니다. 또한 다른 확장자( .txt . dat. 해야한다)

왜 이런 일이 일어나는지 아는 사람이 있나요?

미리 감사드립니다

고쳐 쓰다:

다음을 입력하면: cat -et CDPyPuerto.dat

결과는 다음과 같습니다.

Device ID Local Intrfce$
BIOTERIO Gig 1/0/6$
N7K-LAN(JAF1651ANDL)^M$
Gig 1/0/1 165$
LAB_PESADO Gig 1/0/11$
Arquitectura_Salones^M$
Gig 1/0/9 173$
CIVIL_253 Gig 1/0/4$
Arquitectura Gig 1/0/3$
ING_CIVIL_DIR Gig 1/0/10$
ING_CIVIL Gig 1/0/7$
Ingenieria_Posgrado^M$
Gig 1/0/8 152$
Biblio_Barragan Gig 1/0/2$
Electronica_Edif_3^M$
Gig 1/0/5 133$
Barragan_3750>exit^M$
Connection closed by foreign host.^M$
^[]0;cesar@cesar-HP-Pavilion-15-Note$

gedit로 CDPyPuerto.dat를 열고 일부 내용을 편집하면 모든 ^M$것이 $.

이를 어떻게 자동화할 수 있나요?

답변1

이 문제를 해결한 방법은 CR 문자를 제거하는 것이었습니다( 의 ^M출력에 표시됨 cat -et).

tr -d '\r' < CDPyPuerto.dat |
    awk '{printf "%s%s", $0, (length($1) > 16) ? OFS : ORS}' > TablaCDP.dat

관련 정보