Skip to content

Comment on Parsing JSON in Forty Lines of Awkparent

Comments

Oh dang, that's good.

As long as you don't mind the extra space in the middle.

Often times I don't! Entirely depends on what I'm doing. #1 thing off the top of my head is to remove That One Column that's a bajillion characters long that makes exploratory analysis difficult.

I wonder if it's possible to encode the backspace character in the replacement string?

No problem, there's \b.

  echo "one two three four five" | awk '{$3="\b"; print}'
Inserts the backspace character (^H), which you can then remove with [global] substitution:
  awk '{$3="\b"; sub(/\32\b/, ""); print}'
You can, of course, use an arbitrary sentinel value for the field to be deleted. Should work in gawk and BWK awk.

if you do:

    sed 's/  / /g'

Or sticking with awk, I have this bash alias to remove excess whitespace that is just:

    awk '{$1=$1};1'

what does the 1 at the end do? make awk print all lines? I'm a bit rusty with my awk.

It’s a condition. 1 is true-ish, so it’s a condition that is always true. The default action in awk is print, so it’s the same as:

  '{$1=$1}1{print}'
Or the same as
  '{$1=$1}{print}'
Since the default condition is true. But 1 is shorter than {print}.
AboutSource Built by g1lg1l

Hackerly is an independent reader for Hacker News, built on the public HN API. Not affiliated with Y Combinator.