[YLUG] Subtracting one list from another.
Gaffer
derrick_s at tesco.net
Mon Mar 26 19:38:50 BST 2007
Hi Zoe,
On Monday 26 March 2007 09:49, Zoe Stephenson inscribed thus:
> On Sun, Mar 25, 2007 at 04:38:07PM +0100, Gaffer wrote:
> > On Sunday 25 March 2007 12:27, Gaffer inscribed thus:
> > > Hi Guys,
> > >
> > > How can I subtract items from two lists where one list has
> > > items that are not in the other list in order to get a list of
> > > those items ?
> > >
> > > Sorry if that sounds confusing !
> > >
> > > I have tried "diff -a g1.txt g2.txt > g3.txt" but I end up
> > > with a file that is as big as the sum of the g1 + g2 file sizes
> > > and seems to have as entries that are not in either file.
> > >
> > > cmp just says the first line is different and stops.
> > >
> > > I'm obviously doing something wrong..........!!
>
> [many cool suggestions]
>
> > Thankyou very much for the help ! I got there in the end, or at
> > least somewhere close !
>
> You had a look at diff. By way of extra explanation - diff gives
> you a summary of what changes would need to be made to the first
> file you give it to turn it into the second file. It also tells
> you the line numbers, e.g.:
>
> 2c2,4 tells you a change to make to turn line 2 of the first file
> into lines 2-4 of the second, or
> 3a6 tells you what to add after line 3 of the first to create line
> 6 of the second
That was one of the things that totally confused me. There is no
mention of that in the man pages.
> Then it marks the text to remove with <s and the text to add with
> >s.
>
> > I hadn't realised that there may be non printing characters
> > hidden in the files that i was trying to compare. Also I missed
> > a switch "-r" which didn't help.
I ended up using "comm" ! Thanks for that suggestion Charles.
> > Of course I am now curious as to why there should be non printing
> > characters, other than new lines, carriage returns and white
> > space in a text file ! One file created from "ls > g1.txt" and
> > the other from a text file copied from another machine via drag n
> > drop.
>
> Some ideas, not an exhaustive list:
>
> Filenames can have non-printing characters in them. You can put
> them there yourself, or they might turn up because of some bizarre
> automation problem with encodings.
>
> The output from ls often contains control characters that mess
> with the colours, but these should be suppressed when it finds out
> that its output isn't going to the terminal.
> The text file on the other machine may have a different encoding
> or be edited with a different editor.
>
> Do you know exactly what extra characters are in the file and
> where?
>
> Also, why are you comparing lists of files? There may be a more
> optimal way of doing what you're doing, depending on the
> application.
Thankyou for your info. Some things now make more sense.
Quite simply I was trying to make sure that I had obtained all the
files from a directory on another machine including the hidden ones.
But because I had to break off in the middle of the transfer and go
back to it later, I needed a way to find out what files I had copied
and which I hadn't.
A bit silly I suppose ! I should have just gone and recopied the lot.
--
Best Regards:
Derrick.
More information about the York
mailing list