match a pattern, print it and the next line


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting match a pattern, print it and the next line
# 1  
Old 07-28-2005
match a pattern, print it and the next line

I have a file nbu_faq.txt (Question/answer) which looks like this
Quote:
Q: What is nbu?
A: blablabla...
Q: What is blablabla...?
A: blablabla...
Q: Why ....?
A: blablabla...
and so on...
What I am trying to do is write out each question in a file1.txt and than the question/answer in a file2.txt
like this
file1.txt
Q: What is nbu?
Q: What is blablabla...?
Q: Why ....?
file2.txt
Q: What is nbu?
A: blablabla...
Q: What is blablabla...?
A: blablabla...
Q: Why ....?
A: blablabla...
Code:
for QUESTIONS in $(cat nbu_faq.txt |grep "Q: " |awk '{print $0}' )
do
  echo $QUESTIONS >> TITLE
  echo $(awk '$1 == "$QUESTIONS" {
          print $0
          next
  }
  {print $0} ' nbu_faq.txt) >> QUEST_ANSWER
done

Where TITLE and QUEST_ANSWER are file1.txt and file2.txt
1. first problem is that the loop take argument $1,$2,$3,... for $0 and not the whole line (ex: Q: What is nbu?)!
2. second problem is to print the line where the pattern $QUESTION is matching and the next line!
Could someone help me?
# 2  
Old 07-28-2005
This is what I understand.

You need to extract the questions to a new file.1

In file.2, you need the Q&A from nbu_faq.txt. Which means, file.2 will be a copy of nbu_faq.txt.

So your problem is only in extracting the questions.

Try this for extracting questions

sed -n -e '/^Q:.*/p' nbu_faq.txt > file.1

Vino
# 3  
Old 07-28-2005
Hi Vino

I believe that I did not well explain my question! it's true that it is a little bit confused Smilie
So, I've still a shell script that make HTML page and I want to include this new script to the other one.

The result would like so:

Quote:
1.Q:What's nbu?
2.Q:What's up?
3.Q:Why so?
...
Q:What's nbu?
A:abc

Q:What's up?
A:def

Q:Why so?:
A:ghi
That's means that my script should like this:
Code:
1.for each line contains "Q:xyz"
2.do
3.   call function with parameter the whole line "Q:xyz"
4.   cat the whole line corresponding to "Q:xyz" and the whole line "A:xyz" to file2.txt5. done

My problem is that for points:
1. select the whole line containing Q:
4. for the line in 1. print this line + the next one.
I've tried to do that with sed or awk without find a good solutions!
Thanks
ny
# 4  
Old 07-28-2005
I still don't see how nbu_faq.txt and file2.txt would differ. It lokks like vino's solution is what you want. Smilie
# 5  
Old 07-29-2005
I think it is still the same.

How about this ?

sed -n -e '/^Q:.*/p' nbu_faq.txt > file1.txt
cp nbu_faq.txt file2.txt


Then look at file1.txt and file2.txt and let me know if that is what you wanted.

This is what I got

Code:
[~/temp]$ cat ny.txt
Q: What is nbu?
A: blablabla...
Q: What is blablabla...?
A: blablabla...
Q: Why ....?
A: blablabla...


[~/temp]$ sed -n -e '/^Q:.*/p' ny.txt
Q: What is nbu?
Q: What is blablabla...?
Q: Why ....?

[~/temp]$ cp ny.txt file.2
[~/temp]$ cat file.2
Q: What is nbu?
A: blablabla...
Q: What is blablabla...?
A: blablabla...
Q: Why ....?
A: blablabla...

Vino

Last edited by vino; 07-29-2005 at 02:52 AM..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Match Pattern and print pattern and multiple lines into one line

Hello Experts , require help . See below output: File inputs ------------------------------------------ Server Host = mike id rl images allocated last updated density vimages expiration last read <------- STATUS ------->... (4 Replies)
Discussion started by: tigerhills
4 Replies

2. Shell Programming and Scripting

Regex: print matched line and exact pattern match

Hi experts, I have a file with regexes which is used for automatic searches on several files (40+ GB). To do some postprocessing with the grep result I need the matching line as well as the match itself. I know that the latter could be achieved with grep's -o option. But I'm not aware of a... (2 Replies)
Discussion started by: stresing
2 Replies

3. Shell Programming and Scripting

Match pattern and print the line number of occurence using awk

Hi, I have a simple problem but i guess stupid enough to figure it out. i have thousands rows of data. and i need to find match patterns of two columns and print the number of rows. for example: inputfile abd abp 123 abc abc 325 ndc ndc 451 mjk lkj... (3 Replies)
Discussion started by: redse171
3 Replies

4. Shell Programming and Scripting

Multiple pattern match and print the output in a single line

I need to match two patterns in a log file and need to get the next line of the one of the pattern (out of two patterns) that is matched, finally need to print these three values in a single line. Sample Log: 2013/06/11 14:29:04 <0999> (725102) Processing batch 02_1231324 2013/06/11... (4 Replies)
Discussion started by: rpm120
4 Replies

5. Shell Programming and Scripting

Print only next pattern in a line after a pattern match

I have 2013-06-11 23:55:14 1Umexd-0004cm-IG <= user@domain.com I need sed/awk operation on this, so that it should print the very next pattern only after the the pattern mach <= ie only print user@domain.com (7 Replies)
Discussion started by: anil510
7 Replies

6. Shell Programming and Scripting

awk print pattern match line and following lines

Data: Pattern Data Data Data Data Data Data Data Data Data ... With awk, how do I print the pattern matching line, then the subsequent lines following the pattern matching line. Varying number of lines following the pattern matching line. (9 Replies)
Discussion started by: dmesserly
9 Replies

7. Shell Programming and Scripting

Print Line if next line Match a pattern

Hi All, Does anyone know how to print 1H1A....... in peal script print line ^1H1A....... if next line equal 5R0RECEIPT.... Thank for help:D Cat st.txt 1H1A-IN-11-5410-0009420|1010047766|dsds|1|N|IN|IN|000000|1||N|<<<line match 5R0RECEIPT| 5R0RECEIPT|... (2 Replies)
Discussion started by: kittiwas
2 Replies

8. UNIX for Dummies Questions & Answers

MATCH A PATTERN AND PRINT A LINE ABOVE AND BELOW

Dear All, Hv a very specific requirement. I have a very large text file and in which I have to match a pattern and insert a line above and below. Eg: My file cat test date1 date2 date3 date4 I need to match 'date3' and insert "Reminder1" above date3 and insert 'reminder2'... (4 Replies)
Discussion started by: gokulj
4 Replies

9. Shell Programming and Scripting

Search word in a line and print earlier pattern match

Hi All, I have almost 1000+ files and I want to search specific pattern. Looking forwarded your input. Search for: word1.word2 (Which procedure contain this word, I need procedure name in output. Expected output: procedure test1 procedure test2 procedure test3 procedure test4 ... (7 Replies)
Discussion started by: susau_79
7 Replies

10. Shell Programming and Scripting

match a pattern and print the line once

Hi, I have a xml file <cisco:name> <cisco:mdNm>Cisco Device 7500 A Series</cisco:mdNm> <cisco:meNm>10.1.100.19</cisco:meNm> <cisco:ehNm>/shelf=1</cisco:ehNm> <cisco:subname> <cisco:meNm>10.1.100.19</cisco:meNm> <cisco:sptp>Cisco PortA Series</cisco:sptp> ... (11 Replies)
Discussion started by: bhagirathi
11 Replies
Login or Register to Ask a Question