← Back to context

Comment by nchelluri

11 years ago

What do you use it for?

One use is converting columns of numbers into math strings for bc.

Example (contrived):

    $ seq 10 20 | paste -s -d +
    10+11+12+13+14+15+16+17+18+19+20

    $ seq 10 20 | paste -s -d + | bc
    165

Or converting columns of strings into regex 'or' clauses for searching (contrived example again):

    $ cut -f 3 -d , something.csv | paste -s -d "|"
    a|b|c|d|e|f

    $ egrep "$(cut -f 3 -d , something.csv | paste -s -d "|")" another_file
    ... result lines appear here ...

  • I've used paste all my life, but I never knew you could do

      paste - -
    

    to convert stdin into 2 columns (or "paste - - - -" to get 4 columns!). TIL ...

  • seq has the -s flag which voids the need of the paste for that command:

      $ seq -s + 10 20
      10+11+12+13+14+15+16+17+18+19+20
    

    But I agree that the paste is very useful.

      # a few random samples for an IN SQL statement
      $ shuf -i 1-500000 -n 5 | paste -s -d ,
      371492,250061,266669,455846,295852
    
      # we can even get PI
      $ ( seq -s + -f '4/%g' 1 4 100000 && seq -s - -f '4/%g' 3 4 100000 ) | paste -s -d - | bc -l
      3.14157265358979523735

    • There is a faster way to get pi in bc:

        echo '4*a(1)' | bc -l
      

      (That is, 4×arctan(1)=4×π/4=π.) But your way is truly an awesome use of Unix!