egrep 匹配组没有打印?

egrep 匹配组没有打印?

我正在尝试创建一个 bash 脚本,该脚本将使用 egrep 从文件中 grep 行。我已经创建了应该对我想要的信息进行分组的正则表达式,问题是尝试获取输出。我一直在使用以下命令对其进行测试,但运行时没有打印任何内容。如何打印 -{80} 和 Disconnected 之间的多行?

egrep -E "^-{80}$\r?\n?([:ascii:]*)Disconnected from Server" testing.txt

文件:testing.txt

Connected to the server: name here

Some header text.
More text to go though...
--------------------------------------------------------------------------------
The information that I want, would be in here;

Including this line as well #$
and this one.

Disconnected from Server...

答案1

您最好使用像 awk 这样的工具。

awk '/^----+$/ {flag=1;next} /Disconnected from Server/{flag=0} flag {print}'

看:http://nixtip.wordpress.com/2010/10/12/print-lines-between-two-patterns-the-awk-way/

答案2

因为我最终解决了这个问题,所以这里有一个 sed 版本

sed -n '/^-----\+$/,/^Disonnected/ {/^----\+$/d;/^Disonnected/d;p;}' testing.txt

它对 /RE1/ 和 /RE2/ 之间的所有行进行操作,如果输入与 /RE1/ 或 /RE2/ 匹配,则将其删除,否则将其打印出来。

相关内容