I found this behavior of coreutils utility cut a bit weird

echo "
one,line1
two,line2
three
four,line4
" | cut -d ',' -f1

, got expected result:

one
two
three
four

But:

echo "
one,line1
two,line2
three
four,line4
" | cut -d ',' -f2

, gives outputs:

line1
line2
three
line4

I would expect 3rd line to be empty. Are my expectations wrong?

1

There are 1 best solutions below

1
starball On BEST ANSWER

No, this is not a bug. From the manpage for the -f option:

Select only these fields; also print any line that contains no delimiter character, unless the -s option is specified

Since your third line has no delimiter, then it prints the whole line.

If you add -s, you will get this output:

line1
line2
line4

If you add a delimiter to your third line at the end, like this

echo "
one,line1
two,line2
three,
four,line4
" | cut -d ',' -f2

Then you will get this:

line1
line2

line4