Join command fails to output fields on input file with DOS line endings.

Eliot Moss moss@cs.umass.edu
Mon Jul 22 19:58:00 GMT 2019


On 7/22/2019 3:50 PM, Andy Hall wrote:
> This behavior of join surprised me:
> 
> $ join -1 3 <(echo a b col3  c d | unix2dos) <(echo col3 f2 f3 f4 f5)
>   f2 f3 f4 f5
> 
> Join parses the input line well enough to execute the join, but the presence of the DOS line endings suppresses the
> output of fields from the first input.
> 
> Compare with
> 
> $ join -1 3 <(echo a b col3  c d) <(echo col3 f2 f3 f4 f5)
> col3 a b c d f2 f3 f4 f5
> 
> which is correct.
> 
> Here is a weirder example where the join field is missing and the output is reversed!
> 
> NOK
> $ join <(echo col F1 | unix2dos) <(echo col F2)
>   F2 F1
> 
> OK
> $ join <(echo col F1) <(echo col F2)
> col F1 F2

The lesson is: You're better off not using DOS line endings with Cygwin.
It tends to do things the POSIX way, where the line ending is LF, not
CR LF.  Some things *may* work, but it's somewhat hit or miss ...  EM

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple



More information about the Cygwin mailing list