wc -w将输出每个参数的字数和文件名。所以命令wc -w myfile.txt会给你类似的东西:
42 myfile.txt
Run Code Online (Sandbox Code Playgroud)
但是, wherewc不知道文件名,它只是输出计数。您可以通过使用输入重定向来隐藏文件名,因为wc如果您没有明确命名文件,这些命令将读取标准输入。这可以通过以下方式完成:
wc -w <myfile.txt
Run Code Online (Sandbox Code Playgroud)
或者:
cat myfile.txt | wc -w
Run Code Online (Sandbox Code Playgroud)
尽管后者在这种情况下效率低下,但在输入比某些文件的内容更复杂的情况下效果更好。
的原因是wc不知道文件名wc -w <myfile.txt是因为外壳打开文件,并将其附加到标准输入wc过程。shell 也从不将 传递<myfile.txt给wc程序的命令行参数。许多程序的wc代码如下:
FILE * infile;
if (argc == 0)
infile = stdin;
else
infile = fopen (argv[1]], "r");
Run Code Online (Sandbox Code Playgroud)
选择标准输入或打开已知文件名。在前一种情况下,程序没有可用的名称。