我需要编写一个完全模仿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 -w
⇒79□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 -w
⇒79
7. cat test_input_2 | wc -wc
⇒□□□□□79□□□□□581
谁知道wc是如何格式化输出的?任何帮助都是感激的,非常感谢。
wc
的Open Group规范指定了确切的输出格式。格式字符串中有空格的地方的空格数是不重要的(参见文件格式表示法)。
以
开头$ 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字节