20151009 笔记
Posted on Oct. 9, 2015
是的,我们充满痛苦,因为 Mac 没有 gawk。
Yes, we are so painful due to absence of gawk in Mac
有一天,我们要做一件事情,就是要使用 Bash 来解析一个 JSON 文件,提取其中的一个数组,对数组的元素一一进行操作。例如:
One day, we would like to do a simple thing — parsing JSON file and performing some shell command against an array of items out of the JSON. Say,
我有一个 package.json,
I have a package.json
我要 echo 出每一个人的名字,只要名字,不要班级和版本。
I wanna `echo` all of the plugins names of the dependencies only, without “classes” and “versions”.
于是我想到使用 xargs 配合 gawk 的 gensub 来实现正则分组。但是我失败了,因为我们团队的所有电脑是 Mac,我们不能逼人安装 gawk.
After some Googling, I pick `gawk` tool, working in concert with `xargs` via `gensub`. Ooooops, I was blamed by other teammates after git push, since no one has installed `gawk` via Homebrew in their Mac.
等等,要不使用 perl? 就是这个
Wait , why not do some tricks with `perl` as suggested.
可是我们是一群 JS 全栈工程师,并没有几个人会 perl。
Too bad, we are a JS fullstack team, lacking understanding with `Perl`.
于是,我们灵机一动,为什么不使用 node 来取代 perl 呢?
Now what? There is some light shedding out from Paul Lan’s brain. Why not `Node` with –eval switch?
所以结果是:
Ahah…. here it is:
看到了么?所有的核心字处理的地方都由 node 完成,结果使用 xargs 重定向给命令 —— 这里以 echo 为例子, {} 为 xargs 修饰符。
See? All major String hard work is done by Javascript through Node, with result redirection to `xargs` and echo.
Happy
喜乐
守望小方
Paul Lan