9 ms·
I can't understand why you are mentioning awk. Cut or choose cannot be compared to awk, awk is a programming language. Also I don't think that it's so much eas
by xthetrfd 6y ago
I can't understand why you are mentioning awk. Cut or choose cannot be compared to awk, awk is a programming language.
Also I don't think that it's so much easier to use than cut. On the other hand every *nix system has cut so if you make scripts with it they are portable.
- BiteCode_dev 6y ago> I can't understand why you are mentioning awk. Cut or choose cannot be compared to awk, awk is a programming language. Because 99% of awk IRL use is just as a fancier cut. It's very rare someone even sets a variable using awk. If you do it, you are a statistical rarity. > Also I don't think that it's so much easier to use than cut. On the other hand every *nix system has cut so if you make scripts with it they are portable. I, for one, never remember the syntax for cut. If "choose" gets a deb, I'll use it: Python slicing is something familiar to me. I don't care if cut is on every unix system: if I have the possibility to install things on the machine, then I'll just install what I need. I have a script for that. If I don't, I'll google/man/--help GNU commands as usual. And as for writing shell scripts, I use Python anyway.
- masklinn 6y ago> Because 99% of awk IRL use is just a as fancier cut. You say "fancier", I say "working": since cut can't work on general whitespace without a pre-processing phase (e.g. tr), it simply doesn't work for the vast majority of the things I try to shove into it, and I pretty much always end up using awk instead. Choose means my awk use will fall down by 99% or so.
- BiteCode_dev 6y agoAgreed. In fact, anybody promoting cut, please give me the cut version of: echo -e "foo bar baz" | choose -1 -2 It should work on an arbitrary number of spaces, and fields. The oneliner is going to be... interesting. Now you can do it with awk using: echo -e "foo bar baz" | awk '{ print $NF " " $(NF-1)}' But it's neither easy to type, nor to remember. Choose is what cut should have been.
- errnoh 6y agoBy using only basic functionality that's easy enough to remember I guess I'd go with something like `echo -e "foo bar baz" | tr -s ' ' | rev | cut -d ' ' -f 1-2 | rev | awk '{print $2 " " $1}` Everything except the awk part is something that I use all the time and is easy to type & remember. To be honest I'd use `choose` if it was available everywhere, but for string manipulation I can't justify using nonstandard tools since they aren't always available. Every now and then there are some new ones I actually start to use. For example `ripgrep` mostly replaced `grep -R` for me some time ago, a lot of it has to do with the fact that if `rg` is not found I can fallback to normal grep and get the same result, just a bit slower. I guess my point is that while I do appreciate innovation & making better tooling, the hard part always is getting the tool where it's most needed.
- deleted 6y ago[deleted]
- Brian_K_White 6y agocut? I don't even leave the shell. echo ... |while read a b x ;do ... ;done
- darrenf 6y agoFor what it's worth, BSD cut has a `-w` flag for separating on general whitespace.
- masklinn 6y ago> BSD cut Only FreeBSD, and it's somewhat recent (it was apparently added in 2012, in 9.2, so it's not in osx either).
- Legogris 6y ago> regular expression field separators using Rust's regex syntax This actually makes choose a cut-killer for me. It can be frustrating having to figure out which delimiters to use - tabs or spaces? If spaces, you'll have to chain it with tr, or resort to awk.
- BiteCode_dev 6y agoAnd choose makes it even better by using "\s" as a default separator. So you usually don't have to specify a separator at all.