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

Categories

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

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

1 Answer

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share

548k questions

547k answers

4 comments

86.3k users

...