在Solaris上,cut和gcut有什么区别?

时间:2010-02-04 15:15:27

标签: shell solaris

我最近在我的一台Solaris机器上遇到了这个疯狂的脚本错误。我发现Solaris上的剪切会从它处理的文件中跳过行(或者至少是非常大的 - 在我的情况下是800 MB)。

> 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切割到底发生了什么?我的解决方案是更新我的脚本以使用gcut但是......到底是什么?

2 个答案:

答案 0 :(得分:1)

我从未听说过Solaris中的gcut。做一个男人gcut或gcut - 帮助看看它是什么。为了安全起见,使用切割。否则,你可以使用nawk。例如(对于你想要做的事)

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

因为获取字段1并执行wc与计算行数相同,只需执行wc -l < file

答案 1 :(得分:0)

gcut几乎可以肯定GNU cut,而另一个可能来自最初的System V剪辑。后者的代码实际上可能会回到最初的AT&amp; T Unix源代码。

GNU实用程序在它们成为现代操作系统(如Linux和OS X)的基础部分之前就已经开始运行。早在80年代,很多系统管理员会将它们安装在默认的顶部,或者放在它们位于PATH之前的系统目录中。许多系统管理员更喜欢它们的原因之一是它们通常比“本机”实用程序具有更少的任意限制。显然,Solaris盒子上的剪切程序仍然有一些蹩脚的限制。

我在运行不同操作系统的另一个盒子上测试它,以确保你没有其他东西在进行,比如一些奇怪的Unicode交易。