Linux命令wc输出格式



我需要编写一个完全模仿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是如何格式化输出的?任何帮助都是感激的,非常感谢。

wc的Open Group规范指定了确切的输出格式。格式字符串中有空格的地方的空格数是不重要的(参见文件格式表示法)。

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

开头
$ info wc

信息页给出了输出格式的简要描述。如果这还不能满足您的需要,请获取coretils源代码并阅读wc的源代码。

如果您来到这里(从搜索引擎)查找wc默认打印出的数字,因为您不知道如何解释它的输出并且很恼火,所有其他答案只是将您引导到man/info页面和其他您实际需要的资源阅读,这里是您的快速Stackoverflow时刻,让您重新体验您的悲伤:

info wc,正如@converter42所建议的,解释了它隐藏在某处:

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

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

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

例如:

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

= 2(新)行, 三个字 12字节

最新更新