sed, awk, or something...help meeeeeeeeeee

steve steve at lonetwin.net
Mon Sep 28 18:31:09 UTC 2009


On 09/28/2009 11:18 PM, Joerg Bergmann wrote:
> Am 28.09.2009 19:38, schrieb Kanwar Ranbir Sandhu:
>>  Hi All,
>>
>>  I don't know if I should use sed for what I'm about to ask, but it seems
>>  like a good idea.  If awk is better, or something else entirely, that's
>>  fine too.
>>
>>  I have two files.  File "1" looks like this:
>>
>>  AA
>>  BB
>>  CC
>>  DD
>>
>>  AA
>>  BB
>>  CC
>>  DD
>>
>>  File "2" looks like this:
>>
>>  BBBB1
>>  BBBB2
>>  BBBB3
>>
>>  So, "BB" in file "1" always occurs in the same spot (i.e. between lines
>>  AA and CC).  Knowing that, how do I replace the first occurrence of "BB"
>>  in file "1" with "BBBB1" from file 2, the second occurrence of "BB" in
>>  file "1" with "BBBB2" from file 2, and so on?
>>
>>  I think a bash 'for' or 'while' loop may be useful here, too.  But, it's
>>  the sed/awk/whatever bits I don't know how to do.  I've read some of the
>>  man/info page, looked up sed help on the net, etc.  I'm still not sure
>>  how to do the above with sed.
>>
>>  Thanks in advance!
>>
>>  Regards,
>>
>>  Ranbir
>>
> Probably it's not what you want, but I would prefer writing a
>
> 50 lines standard C program for that task...
>
Seriously ?? ...no, really, seriously ?

I'd recommend using python.

something like:
--------------------------------------
file1_lines = open(file1).readlines()
file2_lines = open(file2).readlines()

modified_file_lines = []

for line in file1_lines:
     if line == 'BB\n':
         modified_file_lines.append(file2_lines.pop(0))
     else:
         modified_file_lines.append(line)

open("modified.out", 'w').write(modified_file_lines)
--------------------------------------

Of course, i've gone for clarity rather than efficiency here. If you understand 
that, I'll gladly show you how to write it more efficiently.

cheers,
- steve

-- 
random non tech spiel: http://lonetwin.blogspot.com/
tech randomness: http://lonehacks.blogspot.com/
what i'm stumbling into: http://lonetwin.stumbleupon.com/




More information about the fedora-list mailing list