1

我有一个行相当长的文件。最长的线长度为 4609:

% perl -nle 'print length' ~/very_large_file | sort -nu | tail -1
4609

现在,当我运行它时,cat ~/very_large_file它运行良好。但是当我把反引号放在里面时,它会给出一个“单词太长”的错误

% foreach line (`cat ~/very_large_file`)
Word too long.

% set x = `cat ~/very_large_file`
Word too long.

是否有替代使用反引号csh来处理此类文件的每一行?

更新我的问题是通过使用不同的语言解决的,但我仍然无法得到 csh 失败的原因。刚刚遇到描述查找 ARG_MAX 的方式的页面getconf命令尤其有用。当然,我仍然不确定这个限制是否是根本原因,以及该限制是否适用于csh.

4

1 回答 1

1

我并不是要打败老马,但如果您正在编写脚本,请考虑移至bash.zsh甚至 Korn。csh有缺点

您可以在不完全放弃 csh 的情况下尝试什么:

  • 如果您使用常规的旧(非常旧)csh,请移至 tcsh。
  • 使用更长的字长(我认为默认为 1000 字节)或使用动态分配重新编译 tcsh。
  • 如果可能,将行处理移动到辅助脚本或程序,并像这样编写该循环:

    猫 ~/very_large_file | xargs 辅助脚本

于 2012-03-02T12:56:21.300 回答