awk进阶吓死我了,mobaxterm导致的版本问题

1.  以前呢一直看到类似于下面的例子,使用awk统计字符串的长度:

awk '{ print length(".viminfo");}'

2. 今天试了一下,竟然卡在那里不动啊?!你是想告诉我这么简单的例子都有问题吗?

3. 折腾半天看不到希望,找同事运行下上面的shell 代码,也是卡在那里啊。我们真是要欲哭无泪。

然后我们意外都按了几下回车键,终于看到结果了!真是服了awk啊!!

4. 然后回到本地,继续自己亲自测试一下:

awk '{print length("asdasd asd");}'

不同不停地开始回车,然后看到的还是一片漆黑的屏幕!!

此刻,我已彻底服了!

然后运行 awk --version, 出来:

GNU Awk 4.1.3, API: 1.1 (GNU MPFR 3.1.4, GNU MP 6.1.0)

5. 然后 \awk --version看到

awk: unknown option -- version

BusyBox v1.22.1 (2015-11-10 11:07:12    ) multi-call binary.

6. 现在执行:

\awk '{print length("asdasd asd");}'

两次回车,出现结果。

7. 此时已经让mobaxterm这个本地环境给气死了!又一次因为awk版本的问题内心崩溃。

上一次,已经是半年以前了。那时使用awk生成报表,特意写好了几个awk脚本,结果在本地就是结果不符合需要的,可是服务器上一运行就是正确结果。

又是mobaxterm这个环境整死人的!

8. 上面这些测试语句,其实我向来是懒得测试,直接写成函数:

function lenf(){ awk '{print length("$@")}';}

9. 然后奇葩的就是怎么都没有结果啊?我已经无数次怀疑,是不是只要我把awk写到函数里面去用,就一定就是出不来结果啊?!

最后发现,是mobaxterm的环境啊,必须写成下面这样:

function lenf(){ \awk '{print length("$@")}';}

害我白白在那里把函数改过来改过去!!昨天的awk match按照正则匹配提取内容也是,写成函数就给我出各种篓子。

注:最早写好的统计字符串长度的别名是:

alias len='func_strlen(){ str=$@;echo ${#str};};func_strlen $@'

10. awk显示文件的每一行的字符数量:

awk '{print length}' 3235_click_20170719_export.txt

731

731

649

11. wc显示每一行的字符个数(默认会比真实个数多一个,wc的一个bug)

2706 $ head -1 !$|wc -c

head -1 3235_click_20170719_export.txt|wc -c

732

你可能感兴趣的:(awk进阶吓死我了,mobaxterm导致的版本问题)