我需要编写一个完全模仿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如何格式化其输出?感谢任何帮助,非常感谢。
答案 0 :(得分:1)
答案 1 :(得分:1)
The Open Group specification for wc
指定确切的输出格式。格式字符串中有空格的空格数量并不重要(参见File Format Notation)。
从历史上看,这些数字通常被格式化为占据七列,不包括它们之间的空间(一些历史性的不良实现包含七列中的空间,以一种方式实现输出当字符数超过六位时格式不明确)。您的某些输出行似乎是根据显示的最大数字中的列数进行格式设置,其他输出行似乎使用了7列。
答案 2 :(得分:0)
如果您是从搜索引擎来的,这是因为默认情况下wc
会打印出哪些数字,因为您不知道如何解释其输出,并且烦恼了所有其他答案,只会导致您输入man / info您实际上需要阅读的页面和其他资源,这是您快速的Stackoverflow时刻,使您摆脱痛苦:
info wc
在隐藏的地方进行了解释:
默认情况下,“ wc”打印三个计数:换行符,单词和字节 计数。
FYI还在{em>说明的开头就以一种微妙的方式{@ 1}提及它:
为每个文件打印换行符,单词和字节数,如果指定了多个文件,则打印总行。
例如:
man wc
= 2(新)行, 3个字和 12个字节