awk
私はスイッチに関する情報を含むテキストファイルを編集するためにスクリプトを使用してきましたが、Expect
これまでのテキストファイルは次のようになりました。
Device ID Local Intrfce
BIOTERIO Gig 1/0/6
N7K-LAN(JAF1651ANDL) Gig 1/0/1 134
LAB_PESADO Gig 1/0/11
Arquitectura_Salones Gig 1/0/9 129
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 --More--
Device ID Local Intrfce
Gig 1/0/8 134
Biblio_Barragan Gig 1/0/2
Electronica_Edif_3 Gig 1/0/5 127
Barragan_3750>exit Connection closed by foreign host.
]0;cesar@cesar-HP-Pavilion-15-Note
スクリプトは複数行の出力を処理するため、ラベルは--More--
テキストファイルに印刷され、列名はDevice ID Local Intrfce
2回印刷されます。
ファイルが次のようになります。
Device ID Local Intrfce
BIOTERIO Gig 1/0/6
N7K-LAN(JAF1651ANDL) Gig 1/0/1 134
LAB_PESADO Gig 1/0/11
Arquitectura_Salones Gig 1/0/9 129
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 134
Biblio_Barragan Gig 1/0/2
Electronica_Edif_3 Gig 1/0/5 127
Barragan_3750>exit Connection closed by foreign host.
]0;cesar@cesar-HP-Pavilion-15-Note
特定の単語を見つける方法を知っていますが、端末の長さに応じて任意の列に存在できます。
要約すると、--More--という単語を見つけて、次の行を使用して削除したいと思います。
助けが必要ですか?
ありがとうございます。
修正する:
これがこれを行います。sed '/--More--/{N;N; s/--More--.*\n[ \t]*//}'
予想されるスクリプトでは、構文は次のとおりです。
send -- "sed '/--More--/{N;N; s/--More--.*\\n\[ \\t\]*//}' TablaCDP.dat > CDPyPuerto.dat \r"
答え1
そしてsed
:
sed '/--More--/{s///;n;d;}'
同等awk
:
awk 'sub(/--More--/, "") {print; getline; next}; {print}'
答え2
Perlはまた、次のことができます。
$ perl -pe '$_ = "" if($. > 1 and $_ =~ /Device ID Local Intrfce/); $_ =~ s/--More--//;' input.txt
Device ID Local Intrfce
BIOTERIO Gig 1/0/6
N7K-LAN(JAF1651ANDL) Gig 1/0/1 134
LAB_PESADO Gig 1/0/11
Arquitectura_Salones Gig 1/0/9 129
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 134
Biblio_Barragan Gig 1/0/2
Electronica_Edif_3 Gig 1/0/5 127
Barragan_3750>exit Connection closed by foreign host.
]0;cesar@cesar-HP-Pavilion-15-Note