【问题标题】:linux command wc output formatlinux命令wc输出格式
【发布时间】:2011-04-25 12:49:24
【问题描述】:

我需要写一个完全模仿linux命令wc的perl(包括尤其是输出格式),在实现了功能的同时,wc的输出真的很头疼,看来它正在改变所有时间,以下是几个例子(我会用□来表示空格字符)
1.wc test_input_1□□705673□□4234032□26754553□test_input_1
2.wc test_input_2□14□□79□581□test_input_2
3.wc test_input_2 -w79□test_input_2
4.wc test_input_2 -wc□79□581□test_input_2
5.cat test_input_2 | wc□□□□□14□□□□□□79□□□□□581
6.cat test_input_2 | wc -w79
7.cat test_input_2 | wc -wc□□□□□79□□□□□581

谁知道 wc 如何格式化它的输出?任何帮助表示赞赏,非常感谢。

【问题讨论】:

  • 看起来它只是在知道文件名时才输出文件名。什么这么复杂?为什么你必须模仿这个而不是execing wc

标签: linux command format wc


【解决方案1】:

The Open Group specification for wc 指定准确的输出格式。格式字符串中有空格的空格数无关紧要(请参阅File Format Notation)。

从历史上看,数字通常被格式化为占据七列,不包括它们之间的空间(一些历史上的错误实现包含七列中的空间,以一种使输出的方式实现字符数超过六位时格式不明确)。您的某些输出行似乎是根据最大显示数字中的列数进行格式化的,而其他输出行似乎使用了七列。

【讨论】:

    【解决方案2】:

    开始

    $ info wc
    

    信息页面给出了输出格式的简要说明。如果这还不够用,请获取coreutils source 并阅读 wc 的源代码。

    【讨论】:

    • 感谢您的回答,非常感谢。
    【解决方案3】:

    如果您来到这里(来自搜索引擎)查找默认情况下会打印出哪些数字 wc,因为您不知道如何解释它的输出并且很恼火所有其他答案只会引导您进入 man/info 页面和您真正需要阅读的其他资源,这里是您快速的 Stackoverflow 时刻,让您重温悲伤:

    info wc,正如@converter42 所建议的,在某个隐藏的地方解释它:

    默认情况下,'wc' 打印三个计数:换行符、单词和字节 很重要。

    仅供参考man wc描述的开头以一种微妙的方式提到它:

    打印每个 FILE 的换行符、字数和字节数,如果指定了多个 FILE,则打印总行数。

    例如:

    $ wc
    abc def
    xyz
    [Ctrl+D]      2       3      12
    

    = 2(新)行3个字12个字节

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-14
      • 1970-01-01
      • 2021-12-10
      • 2021-03-29
      • 2012-10-28
      • 2021-12-20
      相关资源
      最近更新 更多