On 19.07.2017 06:29, Nellis, Kenneth wrote:
From: Steeve McCauley
I can't believe I'd never thought of reordering output columns like
this.
FWIW, I agree that another option should be used to prevent issues
with backward compatibility.
$ echo 1,2,3,4,5,6 | cut -d, -f3,5,2
2,3,5
$ echo 1,2,3,4,5,6 | cut -d, -f3,5,2 -o
3,5,2
Should this be extended to character output as well?
echo output | cut -c6,4,2 -o
tpu
Absolutely! It would be expected behavior (IMHO). I see no reason not
to.
POSIX expends considerable text in requiring that the fields constitute
a set, and are de-duplicated and put into order. (Quoted in earlier
message.) So indeed, the behavior cannot just be changed to match the
QNX "cut", not just because of backward compatibility (always the
primary
concern) but standard conformance also (close second).
QNX has a conformance bug here. I wouldn't continue to rely on it.
In addition, so that scripts can work across platforms, I (strongly)
recommend
that a cut-specific environment variable be defined to allow specifying
the
field ordering behavior. In that way my QNX 4 script (whose cut would
balk at
the -o option) would work with Gnu. One possibility:
On the other hand, I hope I'm not alone in behind opposed to introducing
new global variables which alter language or tool semantics.
Scripts can target multiple implementations of a command by defining a
wrapping function rather than a magic global variable.
A portable script cannot rely on cut having order-preserving fields
anyway.
Everyone in POSIX-land implementing different features and then using
a zoo of environment variables to emulate each other's features and
quirks would be unmanageable.