我目前正在用C和Unix开发cat命令。我的任务是这次设计cat -b和cat -s命令。但是我已经创建了其他命令,例如-t,-v,-n,-e。我被命令-b困住了,因为每当我触发命令时,它就会返回-n返回的相同输出。
例如
cat -n hello.c
1 #include<studio.h>
2 int main() {
3 printf("hello");
4 return 0;
5 }
cat -b hello.c
1 #include<studio.h>
2 int main() {
3 printf("hello");
4 return 0;
5 }
我的第二个问题是cat -s如何工作?当我再次触发命令时,输出显示了一个简单的c文件,没有任何更改。
例如
cat -s hello.c
#include<studio.h>
int main() {
printf("hello");
return 0;
}
在此先感谢您和您的宝贵时间。
让我们从一个简单的六行文件开始,文件名为qq.in
,其中有两个非空行,两个空行和另外两个非空行:
a
b
c
d
cat -n
和之间的区别在于,cat -b
前者将对所有行进行编号,而后者将仅对非空行进行编号:
$ cat -n qq.in $ cat -b qq.in
1 a 1 a
2 b 2 b
3
4
5 c 3 c
6 d 4 d
在另一方面,cat -s
将折叠连续的空线成单个空行,按以下的(联合-n
所以效果是明显的):
$ cat -ns qq.in
1 a
2 b
3
4 c
5 d
请注意,这些行必须真正为空,如果这些行包含空格或其他空白,则这些标志将无法实现您的期望。如果要将空白行视为空行,则可以使用以下类似的方法首先对其进行过滤:
sed -E 's/^\s+$//' qq.in | cat -b
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句