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