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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Linux指令中文说明传送入口 整理自Linux指令中文说明 文本和数据进行处理的编程语言awk 是一种编程语言,...
    释闲人阅读 2,167评论 1 6
  • 一. AWK 说明 awk的处理文本和数据的方式:它逐行扫描文件,从第一行到最后一行,寻找匹配的特定模式的行,并...
    西华子阅读 961评论 0 4
  • 本章主要学习内容awk介绍 awk基本用法 awk变量 awk格式化 awk操作符 awk条件判断 a...
    楠人帮阅读 1,302评论 0 8
  • 一.AWK说明 awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入、一个...
    __一蓑烟雨__阅读 243评论 0 0
  • 颖儿晒出购买记录截图,堪称勤俭模范,与平常人的购物一样 很多人都觉得,艺人购买东西都是不需要看价格就可以直接买下的...
    娱乐号阅读 90评论 0 0