如果模式后面的符号不是数字,则删除一行

时间:2017-04-20 17:50:29

标签: sed

我有一个包含类似内容的文本文件

                ESSID:"228"
                Frequency:5.02 GHz (Channel 4)
                Quality=7/94  Signal level=-89 dBm  Noise level=-99 dBm

                ESSID:"1_156"
                Frequency:5.305 GHz (Channel 61)
                Quality=28/94  Signal level=-68 dBm  Noise level=-98 dBm

                ESSID:""
                Frequency:5.32 GHz (Channel 64)
                Quality=7/94  Signal level=-89 dBm  Noise level=-98 dBm

                ESSID:""
                Frequency:5.745 GHz (Channel 149)
                Quality=21/94  Signal level=-75 dBm  Noise level=-99 dBm

                ESSID:"Apsnyaimadara"
                Frequency:5.11 GHz (Channel 22)
                Quality=22/94  Signal level=-74 dBm  Noise level=-97 dBm

我想摆脱所有不包含数字的ESSID和一个" _"标志。如果它包含ESSID,你能告诉我如何删除一行:"那个模式之后的下一个符号不是一个数字? =)实际上我想完全删除那些块而不仅仅是一条线,但我可以从那开始,任何帮助都会非常感激=)

P.S。使用Sed

1 个答案:

答案 0 :(得分:0)

使用GNU sed:

sed -nE '/ESSID:"[0-9_]+"/,/^$/p' file

或使用GNU grep:

grep -A3 -E 'ESSID:"[0-9_]+"' file

输出:

                ESSID:"228"
                Frequency:5.02 GHz (Channel 4)
                Quality=7/94  Signal level=-89 dBm  Noise level=-99 dBm

                ESSID:"1_156"
                Frequency:5.305 GHz (Channel 61)
                Quality=28/94  Signal level=-68 dBm  Noise level=-98 dBm