代码之家  ›  专栏  ›  技术社区  ›  Chris J

在Solaris上,CUT和GCUT有什么区别?

  •  0
  • Chris J  · 技术社区  · 15 年前

    我最近在我的一台Solaris机器上遇到了这个疯狂的脚本错误。我发现solaris上的cut跳过了它处理的文件(或者至少非常大的文件——在我的例子中是800MB)中的行。

    > cut -f 1 test.tsv | wc -l
      457030
    > gcut -f 1 test.tsv | wc -l
      840571
    > cut -f 1 test.tsv > temp_cut_1.txt
    > gcut -f 1 test.tsv > temp_gcut_1.txt
    > diff temp_cut_1.txt temp_gcut_1.txt | grep '[<]' | wc -l
           0
    

    我的问题是Solaris Cut到底发生了什么?我的解决方案是更新脚本以使用gcut,但是…我勒个去?

    2 回复  |  直到 15 年前
        1
  •  0
  •   Warren Young    15 年前

    GCUT几乎可以肯定 GNU cut ,另一个可能是源于原始系统V切割。后者中的代码实际上可能会返回到最初的AT&T Unix源代码。

    GNU实用程序在成为Linux和OS X等现代操作系统的基础部分之前就已经流行起来了。在80年代,很多系统管理员都会将它们安装在默认操作系统的顶部,或者将它们放在系统路径前面的目录中。许多系统管理员喜欢它们的原因之一是,它们通常比“本机”实用程序具有更少的任意限制。显然,您的solaris设备上的CUT程序仍然有一些不完善的限制。

    我会在运行不同操作系统的不同盒子上测试这个,以确保您没有其他事情发生,比如一些奇怪的Unicode交易。

        2
  •  1
  •   ghostdog74    15 年前

    我从来没有听说过Solaris中的gcut。做一个男人GCUT或GCUT——帮助看它是什么。为了安全起见,使用切割。否则,你只能用鼻涕。(为了你想做的事)

    nawk '{print $1}END{print "Total count:"NR}'
    

    因为获得字段1和执行wc与计算行相同,所以只需执行 wc -l < file