shell
Terark-CTO-雷鹏
Terark可检索压缩技术作者。致力于让数据更小,访问更快。
展开
-
LC_ALL=en_US.UTF-8 让 awk 慢了 40 倍!
无意中发现,在一台服务器上,非常简单的awk程序,比C的等价物要慢40倍,感觉有点不太正常,还以为的确是awk太慢。不得其解,到另一台服务上试了一下,相同的 awk 程序,相同的测试数据,这台服务器的速度与C相当,也就是说,同样是awk,两台机器速度差了 40 倍,而两台机器配置基本相当。非常困惑,找了两小时的原因,终于发现gawk手册里面有一段话:For other single-c...原创 2010-01-29 18:58:25 · 104 阅读 · 0 评论 -
shell 中验证管道是否正确执行
象这样的 shell 代码:prog1 | prog2 | prog3 | prog4$? 只能得到最后一个命令的返回值,该 如何检查整个命令是否全部正确执行? 有一个数组变量PIPESTATUS,保存了最近一个管道命令中所有子命令的返回值该返回值与 $? 一样,每次命令都会改写它,因此,要保存它就必须马上!以下代码可以检查管道命令:prog1 | prog2 | ...原创 2010-02-05 14:29:49 · 311 阅读 · 0 评论 -
通过管道向 hadoop put 文件
使用 hadoop file shell 可以方便地向 hdfs put 文件,但是,该 shell 不支持从管道读取数据并放到 hdfs 文件中。它仅支持这样的 put 命令:cd $HADOOP_HOMEbin/hadoop fs -put localfile $hdfsFilebin/hadoop fs -put localfiles $hdfsDir 幸好,主流的 un...原创 2010-02-05 14:52:16 · 161 阅读 · 0 评论 -
shell heredoc 微妙之处
here doc 的一般用法:[cmd] <<word here-documentdelimiter 可以把 heredoc 的内容放进文件,也可以放进 shell 变量,参见以下代码:#!/bin/sh# write heredoc text to filecat > file <<EOFsome te...原创 2010-02-05 20:03:33 · 102 阅读 · 0 评论 -
终于可以优雅的捕获 shell heredoc 内容了
eval 'var=`cat`' <<"+EOF" 终于可以用这种方式捕获 heredoc 的内容了 我太高兴了! 原先那种方式:var=`cat << "+EOF2" heredoc contentEOF2` 不光麻烦,而且会出问题,如果正文中出现一个未被引号引起来的`就挂了 用 $(cat ...) 的方式...原创 2010-02-05 22:09:02 · 253 阅读 · 0 评论