Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.3k views
in Technique[技术] by (71.8m points)

bash - How to grep the last occurrence of a line pattern

I have a file with contents

x
a
x
b
x
c

I want to grep the last occurrence,

x
c

when I try

sed -n  "/x/,/b/p" file

it lists all the lines, beginning x to c.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

I'm not sure if I got your question right, so here are some shots in the dark:

  • Print last occurence of x (regex):

    grep x file | tail -1
    
  • Alternatively:

    tac file | grep -m1 x
    
  • Print file from first matching line to end:

    awk '/x/{flag = 1}; flag' file
    
  • Print file from last matching line to end (prints all lines in case of no match):

    tac file | awk '!flag; /x/{flag = 1};' | tac
    

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...