Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

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

awk - Print between two patterns

How to print with awk between two patterns in a way that these two patterns will be on first and last line allone without other characters?

awk '
/\caption/{
  next
}
/\begin|word1/{
  found=1
}
found;
/\end|word2/{
  found=""
}
' file.txt

file.txt:

text
egin
gdgs
end}
text
word1
gdflgk
gfdsg
word2
fg

The desired output:

egin
gdgs
end
word1
gdflgk
gfdsg
word2

Output now:

egin
gdgs
end}
word1
gdflgk
gfdsg
word2
See Question&Answers more detail:os

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

1 Reply

0 votes
by (71.8m points)
$ awk 'sub(/.*\begin.*/,"\begin"){f=1} f{ f=!sub(/.*\end.*/,"\end"); print}' file
egin
gdgs
end

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...