delete lines from file2 beginning w/file1


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting delete lines from file2 beginning w/file1
# 8  
Old 06-19-2003
I included those ticks around the sed command because I kept getting an error otherwise. But now I recreated the whole scenario/script and tried it again, and everything works as it should.. go figure! At the time, it was driving me nuts because I knew I didn't need them..
# 9  
Old 06-19-2003
Drap!
ksh on AIX. It may just be a bug. Basically, I want to search for lines in file2 that begin with entries in file1 and either edit file2 and save it with the lines removed or write a new file3. Can you suggest another way, like with perl or awk?
# 10  
Old 06-19-2003
Try putting a backslash in front of the ^
# 11  
Old 06-19-2003
hmmm.... now that time I got no change at all. file2 same as file3... I guess I took away the special meaning of the caret so it was literally looking for a ^.

I tried this on the "real" files and file2 has 3457 lines and file1 (ones to be deleted) has 465 lines. When I delete each line, I am expecting to have a file three with 2992 lines in it, but I have 1347 lines...

...long pause to tinker...

The ticks did it! I removed them from the sed command and now file3 is 2992 lines as expected with the output expected (even the 2 liner sample file3 has the right content).

Kudos ya'll! Yahoo...
# 12  
Old 06-19-2003
...okay, one more post for my sanity sake...
it looks like the cmd="$cmd -e /^$WORD/d" line and the sed $cmd... line are redundant can you put what is happening here in newbie english please sir?

This is my attempt:
With each iteration of the while loop the variable WORD is being assigned the "next" value in file1. Therefore, by the end of file1 the cmd variable has all the values in file 1 concatenated into a long string like:

-e /15/d -e /16/d -e /17/d -e /^/d

I understand that, but why did it do the -e /^/d assignment? I thought that was a search qualifyer...

I love this stuff, but it sure can get convoluted.

Thanks for any insight/corrections.
# 13  
Old 06-24-2003
If file1 has a list of numbers like:

15
16
17
18

then after the loop is done looping, $cmd will end up equaling
-e /^15/d -e /^16/d -e /^17/d -e /^18/d

After insertion into the sed command, you end up with

sed -e /^15/d -e /^16/d -e /^17/d -e /^18/d < file2 > file3

The carat symbol is a special symbol.. -e /^/d will delete any line that has a beginning to it. Smilie

Last edited by oombera; 06-24-2003 at 02:26 PM..
# 14  
Old 06-24-2003
Unless I missed a requirement to use sed, this is a lot easier with awk:
Code:
awk 'BEGIN{ while ((getline < "file1") > 0) list[$1] = 1 }
!list[$1] { print }' file2 > file3

There are several caveats about your data that are implicit in this solution.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Compare file1 and file2, print matching lines in same order as file1

I want to print only the lines in file2 that match file1, in the same order as they appear in file 1 file1 file2 desired output: I'm getting the lines to match awk 'FNR==NR {a++}; FNR!=NR && a' file1 file2 but they are in sorted order, which is not what I want: Can anyone... (4 Replies)
Discussion started by: pathunkathunk
4 Replies

2. Shell Programming and Scripting

Help with Shell Script to identify lines in file1 and write them to file2

Hi, I am running my pipeline and capturing all stout from multiple programs to a .txt file. I want to go into that .txt file and search for specific lines, and finally print those lines in a second .txt file. I can do this using grep, awk, or sed for each line, but have not been able to get... (2 Replies)
Discussion started by: hmortens
2 Replies

3. Shell Programming and Scripting

Match single line in file1 to groups of lines in file2

I have two files. File 1 is a two-column index file, e.g. comp11084_c0_seq6:130-468(-) comp12746_c0_seq3:140-478(+) comp11084_c0_seq3:201-539(-) comp12746_c0_seq2:191-529(+) File 2 is a sequence file with headers named with the same terms that populate file 1. ... (1 Reply)
Discussion started by: pathunkathunk
1 Replies

4. Shell Programming and Scripting

Looking for lines, which is present in file1 but not in file2 using UNIX and awk

I have 2 files with 7 fields and i want to print the lines which is present in file1 but not in file2 based on field1 and field2. Logic: I want to print all the lines, where there is a particular column1 and column2. And we do not find the set of column1 and column2 in file2. Example: "sc2/10... (3 Replies)
Discussion started by: NamS
3 Replies

5. UNIX for Dummies Questions & Answers

if matching strings in file1 and file2, add column from file1 to file2

I have very limited coding skills but I'm wondering if someone could help me with this. There are many threads about matching strings in two files, but I have no idea how to add a column from one file to another based on a matching string. I'm looking to match column1 in file1 to the number... (3 Replies)
Discussion started by: pathunkathunk
3 Replies

6. Shell Programming and Scripting

Remove lines in file1 with values from file2

Hello, I have two data files: file1 12345 aa bbb cccc 98765 qq www uuuu 76543 pp rrr bbbbb 34567 nn ccc sssss 87654 qq ppp rrrrr file2 98765 34567 I need to remove the lines from file1 if the first field contains a value that appears in file2: output 12345 aa bbb cccc 76543 pp... (2 Replies)
Discussion started by: palex
2 Replies

7. Shell Programming and Scripting

[Solved] delete line from file1 by reading from file2

Hi All, I have to arrange one of the text file by deleting specific lines. cat file1.txt 3595 3595 -0.00842773 -0.0085077 0.00368851 12815 12815 -0.00929239 0.00439785 0.0291697 3747 3747 -0.00974353 0.00228922 0.0225058 3574 3574 -0.00711399 -0.00315748 0.0141206 .... 12734... (7 Replies)
Discussion started by: senayasma
7 Replies

8. Shell Programming and Scripting

Display lines from file1 that are not in file2

Hi there, I know the command diff but what I want is slightly different. I have two files containing lines that look like md5sums. file1 5a1e8cee2eb2157c86e7266ee38e47c3 /tmp/file1 a254c48bdd064a40b82477b9fa5be05d /tmp/file2 2d57c72ec898acddf8a6bacb3f821572 /tmp/file3... (5 Replies)
Discussion started by: chebarbudo
5 Replies

9. Shell Programming and Scripting

awk/sed search lines in file1 matching columns in file2

Hi All, as you can see I'm pretty new to this board. :D I'm struggling around with small script to search a few fields in another file. Basically I have file1 looking like this: 15:38:28 sz:10001 pr:14.16 15:38:28 sz:10002 pr:18.41 15:38:29 sz:10003 pr:19.28 15:38:30 sz:10004... (1 Reply)
Discussion started by: floripoint
1 Replies

10. Shell Programming and Scripting

extracting lines from a file1 which maches a pattern in file2

Hi guys, Can you help me in solving ths problem? I have two files file1 and file2 as following: ===FILE1==== >LOC21 MASSKFCTVLSLALFLVLLTHANSAELFSFNFQTFNAANLILQGNASVSSSGQLRLTEVKSNGEPKVASL VASFATAFTFNILAPILSNSADGLAFALVPVGSQPKFNGGFLGLFQNVTYDP >LOC05... (11 Replies)
Discussion started by: smriti_shridhar
11 Replies
Login or Register to Ask a Question