it should work as you tried. I did this test:
...
...
:: get some sample points
las2las -i colored.laz -o tmp.laz -stop_at_point 10
las2txt -i tmp.laz -o tmp.txt -parse xyzRGB
85130.03 79586.09 325.98 13056 18688 23552
85130.35 79586.16 325.92 12288 17920 22528 --> red test
85130.68 79586.23 325.89 12800 18432 23296 --> blue test
85130.96 79586.29 325.82 11008 16128 20480
85131.26 79586.35 325.80 22784 25088 23552 --> green test
85131.57 79586.42 325.74 34048 35840 29440
85131.88 79586.48 325.69 32768 34048 27648
85130.29 79585.73 325.92 11776 17664 22528
85130.61 79585.80 325.87 12032 17664 22528
85130.90 79585.86 325.84 12032 17152 21760
:: single color test
las2las -i tmp.laz -o tmp2.laz -keep_RGB_red 12288 12288
las2las -i tmp.laz -o tmp2.laz -keep_RGB_green 25088 25088
las2las -i tmp.laz -o tmp2.laz -keep_RGB_blue 23296 23296
-> each 1 point, ok
combine this results:
las2las -i tmp.laz -o tmp2.laz -keep_RGB_red 12288 12288 -keep_RGB_green 25088 25088 -keep_RGB_blue 23296 23296
-> empty result, so by default it will be combined as "AND".
las2las -i tmp.laz -o tmp2.laz -keep_RGB_red 12288 12288 -keep_RGB_green 25088 25088 -filter_or -keep_RGB_blue 23296 23296 -filter_or
-> empty result -> it is not a OR filter
las2las -i tmp.laz -o tmp2.laz -keep_RGB_red 12288 12288 -keep_RGB_green 25088 25088 -filter_and -keep_RGB_blue 23296 23296 -filter_and
-> result 3 points -> this is the one!
What do you mean with "not working for me": What is the output and what did you expect?
If you can not fix it: Can you send a small sample of the file and I will further analyze.
Thanks,
Jochen @rapidlasso