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/