Delete lines with a word and their above lines


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Delete lines with a word and their above lines
# 1  
Old 07-19-2013
Delete lines with a word and their above lines

Hi, i have a file like this:

Code:
A1
kdfjdljfdkljfdlf

A2
lfjdlfkjddkjf

A3
***no hit***

A4
ldjfldjfdk

A5
***no hit***

A6
jldfjdlfjdlkfjd

I want to remove the lines "***no hit*** and their above line to get an output file like this:
Code:
A1
kdfjdljfdkljfdlf

A2
lfjdlfkjddkjf

A4
ldjfldjfdk

A6
jldfjdlfjdlkfjd

Thanks!!


Moderator's Comments:
Mod Comment Use code tags please, see PM.

Last edited by zaxxon; 07-19-2013 at 10:46 AM.. Reason: code tags
# 2  
Old 07-19-2013
Code:
awk 'NF{v=$0;getline;if($0!="***no hit***") print v RS $0 RS " "}' file

This User Gave Thanks to Yoda For This Post:
# 3  
Old 07-19-2013
Quote:

Code:
awk 'NF{v=$0;getline;if($0!="***no hit***") print v RS $0 RS " "}' file

Hello Yoda,

Sorry to bother you, could you please explaoin this great command of awk.
I will be grateful to you.


Thanks,
R. Singh
# 4  
Old 07-19-2013
Code:
awk '
        # If NF ( Number of Fields ) not equal to zero
        NF {
                # Set variable v = $0 ( current record )
                v = $0
                # Explicitly read next input record
                getline
                # If $0 ( current record ) != "***no hit***"
                if ( $0 != "***no hit***" )
                        # Print variable v value RS ( Record Separator - newline by default ) $0 RS blank space " "
                        print v RS $0 RS " "
        }
' file

This User Gave Thanks to Yoda For This Post:
# 5  
Old 07-19-2013
Thanks a lot Yoda, I have no hesitation to say you are one of the champs for awk. It's really pleasure to read/follow your posts. Smilie



Thanks,
R. Singh
# 6  
Old 07-19-2013
Yoda,

I just tried your awk script but i get an error @ line 3 i.e v=$0. As i'm pretty new to awk i could not make out what could be the problem. And also one more doubt what i have is:

Ravinder wanted to delete the line before the ***no hit*** also but with the logic what i understood the below script will print the line A3 and then check for ***no hit*** condition rite..?


bash-3.00# awk '
> NF
> {
> v=$0
> getline
> if ($0!="***no hit***")
> print v RS $0 RS " "
> '
awk: syntax error near line 3
awk: bailing out near line 3
# 7  
Old 07-19-2013
Use nawk instead in Solaris or SunOS
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Sed/awk to delete single lines that aren't touching other lines

Hello, I'm trying to figure out how to use sed or awk to delete single lines in a file. By single, I mean lines that are not touching any other lines (just one line with white space above and below). Example: one two three four five six seven eight I want it to look like: (6 Replies)
Discussion started by: slimjbe
6 Replies

2. Shell Programming and Scripting

search and replace, when found, delete multiple lines, add new set of lines?

hey guys, I tried searching but most 'search and replace' questions are related to one liners. Say I have a file to be replaced that has the following: $ cat testing.txt TESTING AAA BBB CCC DDD EEE FFF GGG HHH ENDTESTING This is the input file: (3 Replies)
Discussion started by: DeuceLee
3 Replies

3. UNIX for Advanced & Expert Users

In a huge file, Delete duplicate lines leaving unique lines

Hi All, I have a very huge file (4GB) which has duplicate lines. I want to delete duplicate lines leaving unique lines. Sort, uniq, awk '!x++' are not working as its running out of buffer space. I dont know if this works : I want to read each line of the File in a For Loop, and want to... (16 Replies)
Discussion started by: krishnix
16 Replies

4. Shell Programming and Scripting

Search the word to be deleted and delete lines above this word starting from P1 to P3

Hi, I have to search a word in a text file and then I have to delete lines above from the word searched . For eg suppose the file is like this: Records P1 10,23423432 ,77:1 ,234:2 P2 10,9089004 ,77:1 ,234:2 ,87:123 ,9898:2 P3 456456 P1 :123,456456546 P2 abc:324234 (2 Replies)
Discussion started by: vsachan
2 Replies

5. Shell Programming and Scripting

need to delete all lines from a group of files except the 1st 2 lines

Hello, I have a group of text files with many lines in each file. I need to delete all the lines in each and only leave 2 lines in each file. (3 Replies)
Discussion started by: script_op2a
3 Replies

6. Shell Programming and Scripting

How to delete all lines before a specific word?

Let's say we have a file containing: alllllsadfsdasdf qwdDDDaassss ccxxcxc#2222 dssSSSSddDDDD D1Sqn2NYOHgTI Hello Alex ssS@3 Ok, and let's say we want to delete all words from D1Sqn2NYOHgTI and back, this means to delete the words (and the lines of them) : alllllsadfsdasdf... (2 Replies)
Discussion started by: hakermania
2 Replies

7. UNIX for Dummies Questions & Answers

How get only required lines & delete the rest of the lines in file

Hiiii I have a file which contains huge data as a.dat: PDE 1990 1 9 18 51 28.90 24.7500 95.2800 118.0 6.1 0.0 BURMA event name: 010990D time shift: 7.3000 half duration: 5.0000 latitude: 24.4200 longitude: 94.9500 depth: 129.6000 Mrr: ... (7 Replies)
Discussion started by: reva
7 Replies

8. Shell Programming and Scripting

How to delete lines in a file that have duplicates or derive the lines that aper once

Input: a b b c d d I need: a c I know how to get this (the lines that have duplicates) : b d sort file | uniq -d But i need opossite of this. I have searched the forum and other places as well, but have found solution for everything except this variant of the problem. (3 Replies)
Discussion started by: necroman08
3 Replies

9. Shell Programming and Scripting

search a word and delete consecutive lines below it

Hi all coders, I need a help to process some data. I have this file, 3 09/21/08 03:32:07 started undef mino Oracle nmx004.wwdc.numonyx.co m Message Text : The Oracle session with the PID 1103 has a CPU time consuming of 999.00... (3 Replies)
Discussion started by: vikas027
3 Replies

10. Shell Programming and Scripting

delete lines containing a specific word in afile

Hi, Please suggest how to write a shell script which delets all the lines containing the word unix in the files supplied as argument in the shell. (4 Replies)
Discussion started by: sireesha9
4 Replies
Login or Register to Ask a Question