Linux - NewbieThis Linux forum is for members that are new to Linux.
Just starting out and have a question?
If it is not in the man pages or the how-to's this is the place!
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
I cant find anything that accomplishes what I need. I want to find a 'pattern' and print every line after that until it reaches 'pattern2' until the end of file.
pattern=Trans
pattern2=Port
Quote:
Input File:
Trans
paragraph
Port
paragraph
Trans
paragraph
Port
paragraph
... (Repeats)
Quote:
Output:
Trans
paragraph
Trans
paragraph
Its a file with many occurrences and I only need to extract the paragraph after the string. Thanks!
Excellent, I learnt something from this too - I have only ever used that sed notation to extract a single block of text and didn't realise that it extracts any number of blocks between matching lines. :-)
Not sure where you're going with this but you probably want something like this:
Code:
sed -n '/Trans/,/Port/{/Trans/ {R FILE
d};/Port/!p}' file
Notice, That it is a capital R in contrast to the linked example. It is also important to have line break after the filename FILE because everything that follows the R command will be interpreted as part of the filename.
I get output with the TRANS deleted but not replaced.
That is because you FILE is supposed to be the filename. Replace FILE with the actual name of your second file.
If you want to store the filename in a variable then you will have to use double-quotes instead of single-quotes to enable expansion. Like this
Say the same thing but replacing Trans. Lets forget about Port because I got that section parsed already. Now I need to replace each Trans with each line in file2. Thanks
Which post are you referring to? There was a typo in my previous post. Fixed that and it worked for me.
Also tried grail's solution and it also works fine.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.