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