4 ms·
fun, although I did cheat a bit on the corrupted text and pulled the expected output from README instead of the input file :)
by cleech 10y ago
fun, although I did cheat a bit on the corrupted text and pulled the expected output from README instead of the input file :)
- zoidb 10y agoThe answers I came up with are in https://github.com/jarv/cmdchallenge/blob/master/challenges.yaml https://github.com/jarv/cmdchallenge/blob/master/challenges.... if you are curious.
- JoshTriplett 10y agoThe description for remove_duplicate_lines needs some clarification, because as written it sounds like either "uniq" or "uniq -u". You should explicitly say that you want the first instance of every duplicated line printed, and all other duplicates not printed, even if not adjacent.
- zoidb 10y agoThanks, also feel free to send a pull requests as I would definitely appreciate contributions.
- adimitrov 10y agoThe awk line for duplicate lines without changing ordering is… wow. Awk is such an underused tool (at least for me.) My solution was: awk '{printf "%2d %s\n", NR, $0}' < faces.txt | sort -k 2 -u | sort -n | sed 's/^...//' Ironically, it also involved awk! But I used it to prepend line numbers, which uniq and sort can ignore, then re-sort it according to line numbers. Very much not an ideal solution!
- ianmcgowan 10y agoMine was more procedural - store each line in a hash as you visit it, and only print lines you haven't already visited. awk is awesome ;-) awk '!h[$0] {h[$0]=1; print}' faces.txt
- schoen 10y agoI also used this approach but the original creator's version posted on GitHub is remarkably more concise (due to a clever use of the ++ operator).
- ianmcgowan 10y agoawk '!h[$0]++' faces.txt That is clever! Awk golf hole-in-one ;-)
- jenrzzz 10y agoI love awk. I used to be afraid of it, but I started using it just to pluck columns, and over a couple years actually started to grok it. Also, I learned today that cat takes a -n option to prepend line numbers to the output! My solution ended up being cat -n faces.txt | sort -k2 -k1n | uniq -f1 | sort -nk1,1 | cut -f2-
- MrQuincle 10y agoThat was a tough one. In the end something like this: < war_and_peace.txt tr -s '!' | sed 's/!\([a-z]\)/\1/g' | sed 's/!\( [a-z]\)/\1/g' | sed 's/!\.!/./g' | sed 's/ !/ /g' However, I don't think I learnt much from that. :-)
- arde 10y agoMine was a bit more procedural, if that's what you were looking for: awk '{l++;gsub("!","");t[1]=4;t[4]=2;t[9]=3;o=$1;for(i=2;i<=NF;i++){o=o " " $i (i==t[l]?"!":"")};print o}' war_and_peace.txt
- MrQuincle 10y agoAh, I thought you knew seq had a delimiter option! It does actually. :-) seq -s ' ' 1 100
- helb 10y agoJust "echo {1..100}" works too.