Shell-Script
如何找到一個單詞並使用以下行將其刪除
我一直在使用
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--
因此在文本文件中列印了 te 標籤,並且列名Device ID Local Intrfce
被列印了兩次。我希望文件看起來像這樣:
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"
與
sed
:sed '/--More--/{s///;n;d;}'
awk
等價物:awk 'sub(/--More--/, "") {print; getline; next}; {print}'
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