哪个是简单快速的UNIX命令来打印最后一次出现的模式中的所有行?

Sid*_*han 9 unix perl awk sed

哪个简单快速的UNIX命令可以打印从最后一次出现的模式到文件末尾的所有行?

sed -n '/pattern/,$p' file
Run Code Online (Sandbox Code Playgroud)

此sed命令从第一次出现开始打印.

pot*_*ong 8

这可能适合你(GNU sed):

sed 'H;/pattern/h;$!d;x;//!d' file
Run Code Online (Sandbox Code Playgroud)

存储最后一个模式,并在保留空间中跟随行,并在文件结尾处打印出来.

或者在awk中使用相同的方法:

awk '{x=x ORS $0};/pattern/{x=$0};END{if(x ~ //)print x}' file
Run Code Online (Sandbox Code Playgroud)

然而在我的机器上jaypals方式与sed似乎是最快的:

tac file | sed '/pattern/q' | tac
Run Code Online (Sandbox Code Playgroud)


jay*_*ngh 7

反转文件,打印直到第一个模式,退出并反转文件.

tac file | awk '/pattern/{print;exit}1' | tac
Run Code Online (Sandbox Code Playgroud)