Need to delete multiple lines in a file.


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Need to delete multiple lines in a file.
# 1  
Old 10-12-2006
Java Need to delete multiple lines in a file.

Hi,

I'm new to this forum, and searched through the previous posts, but didn't see anything close enough to what i'm looking for.

I have a radius file like this:

Code:
testone          Password = "11111"
                    Service-Type = "Framed-User",
                    Session-Timeout = "9000",
                    Ascend-Idle-Limit = "900"
testtwo          Password = "11111"
                    Service-Type = "Framed-User",
                    Session-Timeout = "9000",
                    Ascend-Idle-Limit = "900"
testthree        Password = "11111"
                    Framed-Address = "000.000.000.000",
                    Framed-Netmask = "255.255.255.0"
                    Ascend-Route-IP=Route-IP-Yes
                    Framed-Route = "000.000.000.000/29 000.000.000.000 1 n"
1testone        Password = "11111"
                    Service-Type = "Framed-User",
                    Ascend-Idle-Limit = "900"
testtwo5        Password = "11111"
                    Service-Type = "Framed-User",
                    Session-Timeout = "9000",
                    Ascend-Idle-Limit = "900"
###EOF###

I need to search for an exact match of the username such as testtwo and delete that line and all the lines below it until I reach the next username.

The main problem is there is no set number of lines below the username, it could be anywhere from 2-8 lines.

The only constants are:

The username will allways be at the beginning of a new line and the word password will always and only be on the same line as the username.

I'm on a linux server, so any combination of sed, awk or perl should work.

Thanks in advance for any help.
# 2  
Old 10-12-2006
nawk -v name='1testone' -f kang.awk myFile.txt

kang.awk:
Code:
/^[^ ]/ { found= ($1 == name) ? 1 : 0 }
!found

# 3  
Old 10-13-2006
Can not do better with sed (only worse).

Brilliant!
# 4  
Old 10-13-2006
Code:
sed "/testtwo /,/Password/{/testtwo /d;/Password/!d;}" file

# 5  
Old 10-14-2006
Quote:
Originally Posted by vgersh99
nawk -v name='1testone' -f kang.awk myFile.txt

kang.awk:
Code:
/^[^ ]/ { found= ($1 == name) ? 1 : 0 }
!found

Could someone explain this? I understand that "/^[^ ]/ " grabs all the usernames. and I think I understand the ternary operator; found equals true (1) if name (the username) is found in $1, or found equals false (0) if it's not. Then I get a bit lost, I think !found toggles the value of found, but why? And how does it all end up removing the username and all text between it and the next username. Thanks, pete.
# 6  
Old 10-14-2006
Quote:
Originally Posted by vgersh99
nawk -v name='1testone' -f kang.awk myFile.txt

kang.awk:
Code:
/^[^ ]/ { found= ($1 == name) ? 1 : 0 }
!found

Could someone explain this? I understand that "/^[^ ]/ " grabs all the usernames. and I think I understand the ternary operator; found equals true (1) if name (the username) is found in $1, or found equals false (0) if it's not. Then I get a bit lost, I think !found toggles the value of found, but why? And how does it all end up removing the username and all text between it and the next username.

Last edited by petebear; 10-14-2006 at 07:26 PM..
# 7  
Old 10-16-2006
Code:
# for lines NOT starting with a 'space'....
# set 'found' to '1' if if the first field is 'name' and to '0' otherwise
/^[^ ]/ { found= ($1 == name) ? 1 : 0 }

# if 'found == 0' - print the current line. could be rewritten as 'found == 0 {print $0}'
!found


Last edited by vgersh99; 10-16-2006 at 01:05 PM..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Delete multiple lines between blank lines containing two patterns

Hi all, I'm looking for a way (sed or awk) to delete multiple lines between blank lines containing two patterns ex: user: alpha parameter_1 = 15 parameter_2 = 1 parameter_3 = 0 user: alpha parameter_1 = 15 parameter_2 = 1 parameter_3 = 0 user: alpha parameter_1 = 16... (3 Replies)
Discussion started by: ce9888
3 Replies

2. Shell Programming and Scripting

Removing multiple lines from input file, if multiple lines match a pattern.

GM, I have an issue at work, which requires a simple solution. But, after multiple attempts, I have not been able to hit on the code needed. I am assuming that sed, awk or even perl could do what I need. I have an application that adds extra blank page feeds, for multiple reports, when... (7 Replies)
Discussion started by: jxfish2
7 Replies

3. 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

4. Shell Programming and Scripting

delete multiple lines by line number

I have file with 10000 records and i need to delete the lines in single shot based on line number range say from 10 to 51 , 53 to 59 , 105 to 107, 311 to 592 etc... between range works fine for me but how to achive for above case? please help sed '10,51 {d}' infile > outfile (5 Replies)
Discussion started by: zooby
5 Replies

5. Shell Programming and Scripting

Delete multiple lines in a file

The high level requirement is as follows: I have a file which has multiple line starting with pattern (which is fixed say "Hello" and i need to search for one more pattern in that line which starts with "Hello" and if the pattern matches, i need to delete lines from that line to the next line... (5 Replies)
Discussion started by: KeerthiReddy
5 Replies

6. Shell Programming and Scripting

Delete multiple lines from a file

Hi, I'm trying to delete some entry's, the source is a file1, from file2 what I have until now is this file1 : 68255706,234200801053269,447916926187,8944200006353029289F 73495477,234200101579319,447861769299,8944200006852033303F file2: 353851164675 NEW : 272050001241889 -ok ... (10 Replies)
Discussion started by: BlueRay86
10 Replies

7. UNIX for Dummies Questions & Answers

delete multiple lines by line number

I have been googling, but cannot find that works for me. I have a text file tmp.out with contents: sadfsdf sdfosuidhfousdhof soduhf osdfu osudfhosudhfd sdfgsdfg asdfiojhsdf asdoludhflsdjfhskldjfhsdjdlfsjdhnlj h sdja ouahsdjdafkljsa oljhljh I have another file... (11 Replies)
Discussion started by: ChicagoBlues
11 Replies

8. Shell Programming and Scripting

regex to delete multiple blank lines in a file?

can't figure out a way to delete multiple empty lines but keep single empty lines in a file, file is like this #cat file 1 2 3 4 5 6 - What I want is 1 2 (6 Replies)
Discussion started by: fedora
6 Replies

9. Shell Programming and Scripting

delete multiple empty lines

Hi, I need to delete the lines with empty name. What is the best way to do it? Thanks a lot for your help! EMID MMDDYY HOURS JOB EMNAME 0241 051605 11.40 52062 someone 0520 051605 10.63 52062 0520 051605 10.66 52062 0520 051605 10.65 52062 (3 Replies)
Discussion started by: whatisthis
3 Replies

10. Shell Programming and Scripting

Delete multiple lines w/ sed

Hi all, I am trying to figure out the syntx to delete multiple lines w/ sed. I know the following syntax will delete lines 1 THROUGH 5 from filex: sed 1,5d filex But I wan to delete lines 1 AND 5 (keeping lines 2,3, and 4). Does anyone know how to do this in a single sed statement? ... (2 Replies)
Discussion started by: bookoo
2 Replies
Login or Register to Ask a Question