Get previous and next line


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Get previous and next line
# 8  
Old 09-15-2009
What is A1 and B1 ?

---------- Post updated at 11:39 AM ---------- Previous update was at 11:35 AM ----------

Here is the file and searching for NAME

Code:
NAME
ADDRESS
NO
NAME
OTHER
NEW
OP
NAME
FEW

The output should be ADDRESS NO OTHER OP FEW
# 9  
Old 09-15-2009
Try this:

INPUT FILE:
Code:
$ cat file.txt
NAME
ADDRESS
NO
NAME
OTHER
NEW
OP
NAME
FEW
OTHER
NEW
NAME


SHELL SCRIPT:
Code:
 
$ cat file1
grep -n "NAME" file.txt | cut -d ':' -f1 > /tmp/occurance_lines.txt
i=1
while read line
do
  if [[ ${i} -gt 3 ]]; then
    break
  fi
  line1=$(( ${line} - 1 ))
  if [[ line1 -ne 0 ]]; then
    tail +${line1} file.txt | head -1 >> /tmp/output.txt
  fi
  line2=$(( ${line} + 1 ))
  tail +${line2} file.txt | head -1 >> /tmp/output.txt
  i=$(( ${i} + 1 ))
done < /tmp/occurance_lines.txt
cat /tmp/output.txt
rm -f /tmp/occurance_lines.txt /tmp/output.txt

OUTPUT:
Code:
 
$ ./file1
ADDRESS
NO
OTHER
OP
FEW

HTH,Smilie


Regards,

Praveen
# 10  
Old 09-15-2009
-A1 option print the line "after" the matched line
-B1 option print the line "before" the matched line
You can also use -C1 which is equal to -A1 -B1
Code:
grep -C1 "something" yourfile

Is this what u expected ?

Last edited by thanhdat; 09-15-2009 at 06:04 AM..
# 11  
Old 09-15-2009
Here is what i get ..

Code:
% grep -C1 "ABC" pattern
grep: illegal option -- C
grep: illegal option -- 1
Usage: grep -hblcnsviw pattern file . . .

@praveen
can it be done using one liners ?
# 12  
Old 09-15-2009
Quote:
Originally Posted by dinjo_jo

@praveen
can it be done using one liners ?
Perhaps in awk. But that is unfortunately, not my forte. Smilie

awk experts, anyone?

Regards,

Praveen
# 13  
Old 09-15-2009
Try...
Code:
 
awk '/NAME/{getline;print prev;print $0;next}{prev=$0}' infile

# 14  
Old 09-15-2009
Can you explain it a bit.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Remove new line starting with a numeric value and append it to the previous line

Hi, i have a file with multiple entries. After some tests with sed i managed to get the file output as follows: lsn=X-LINK-IN0,apc=661:0,state=avail,avail/links=1/1, 00,2110597,2094790,0,81,529,75649011,56435363, lsn=TM1ITP1-AM1ITP1-LS,apc=500:0,state=avail,avail/links=1/1,... (5 Replies)
Discussion started by: nms
5 Replies

2. Shell Programming and Scripting

How to add the line to previous line in | delimited text?

Hi All, I am new to Unix and I have one challenge and below are the details. I have pipe delimited text file in that data has span into multiple lines instead of single line. Sample data. Data should be like below for entire file. 41|216|398555|77|provided complete NP outcome data ... (21 Replies)
Discussion started by: Narasimhasss
21 Replies

3. Shell Programming and Scripting

How to print previous line of multiple pattern matched line?

Hello, I have below format log file, Comparing csv_converted_files/2201/9747.1012H67126.5077292103609547345.csv and csv_converted_files/22019/97447.1012H67126.5077292103609547345.csv Comparing csv_converted_files/2559/9447.1012H67126.5077292103609547345.csv and... (6 Replies)
Discussion started by: arvindshukla81
6 Replies

4. UNIX for Advanced & Expert Users

How to find a string in a line in UNIX file and delete that line and previous 3 lines ?

Hi , i have a file with data as below.This is same file. But actual file contains to many rows. i want to search for a string "Field 039 00" and delete that line and previous 3 lines in that file.. Can some body suggested me how can i do using either sed or awk command ? Field 004... (7 Replies)
Discussion started by: vadlamudy
7 Replies

5. UNIX for Dummies Questions & Answers

How to remove fields space and append next line to previous line.?

awk 'BEGIN{FS = "Ç"} NR == 1 {p = $0; next} NF > 1 {print p; p = $0} NF <= 1 {p = (p " " $0)} END {print p}' input.txt > output.txt This is what the input data file looks like with broken lines Code: 29863 Ç890000000 Ç543209911 ÇCHNGOHG Ç000000001 Ç055 ... (4 Replies)
Discussion started by: cumeh1624
4 Replies

6. Shell Programming and Scripting

Remove previous line if next & previous lines have same 4th character.

I want to remove commands having no output. In below text file. bash-3.2$ cat abc_do_it.txt grpg10so>show trunk group all status grpg11so>show trunk group all status grpg12so>show trunk group all status GCPKNYAIGT73IMO 1440 1345 0 0 94 0 0 INSERVICE 93% 0%... (4 Replies)
Discussion started by: Raza Ali
4 Replies

7. Shell Programming and Scripting

Sed Comparing Parenthesized Values In Previous Line To Current Line

I am trying to delete lines in archived Apache httpd logs Each line has the pattern: <ip-address> - - <date-time> <document-request-URL> <http-response> <size-of-req'd-doc> <referring-document-URL> This pattern is shown in the example of 6 lines from the log in the code box below. These 6... (1 Reply)
Discussion started by: Proteomist
1 Replies

8. Shell Programming and Scripting

Delete line with match and previous line quoting/escaping problem

Hi folks, I've list of LDAP records in this format: cat cmmac.export.tmp2 dn: deviceId=0a92746a54tbmd34b05758900131136a506,ou=devices,ou=customer,ou=nl,o=upc cmmac: 00:13:11:36:a5:06 dn: deviceId=0a92746a62pbms4662299650015961cfa23,ou=devices,ou=customer,ou=nl,o=upc cmmac:... (4 Replies)
Discussion started by: tomas.polak
4 Replies

9. Shell Programming and Scripting

Append next line to previous line when one pattern not found

Hi, I need help for below scenario.I have a flat file which is having records seperated by delimiters which will represent each record for oracle table.My Control file will consider each line as one record for that table. Some of the lines are aligned in two/three lines so that records are... (4 Replies)
Discussion started by: kannansr621
4 Replies

10. Shell Programming and Scripting

sed: appending alternate line after previous line

Hi all, I have to append every alternate line after its previous line. For example if my file has following contents line 1: unix is an OS line 2: it is open source line 3: it supports shell programming line 4: we can write shell scripts Required output should be line1: unix is an OS it is... (4 Replies)
Discussion started by: rish_max
4 Replies
Login or Register to Ask a Question