3 151 12
2.diff
逐行比较两个文件;如果指定的是目录,则比较目录下的同名文件。
输出为:文件1中的行数+格式提示+文件2中的行数,其中格式提示为a、c、d,对应add、change、delete。
diff的退出值有特定含义, 0 表示没有不同,1 表示找到不同处,2 表示出错。
常用选项:
-y --side-by-side 以两列输出。这时用 |标注二者不同的行,<标注后者比前者少一行,>标注前者比后者少一行。此时还可以加上下面的选项:
-W NUM --width=NUM 输出最多打印 NUM (默认 130) 列。
--left-column 仅输出共有行的左侧列。
-c -C NUM --context[=NUM] 输出 NUM (默认 3) 行复制的上下文。两个文件的全文都会显示。
-u -U NUM --unified[=NUM] 输出 NUM (默认 3) 行合并的上下文。两个文件相同的部分只显示一次。
-ruN 生成patch文件,格式为diff -ruN file1 file2 >patch.dat,这时使用patch file1 patch.dat就能把file1的内容更新到与file2一致了。
sort、sum、wc同样可以对文件和输出按需要进行处理。对于能够把stdin重定向到文件中的Linux来说,对输出的处理和对文件的处理是一样的。
3.sort
按字母序输出各行。这个命令可以同时处理多个文件。
常用选项:
-u 去除重复行
-r 降序输出
-n 按数字序排序,(这样2才不会排到10后面)
-t 按某个分隔符分隔,这时可以用-k指定列数
4.sum
计算文件校验和以及占用的块(block)数。校验和算法和block的大小可以根据选项设定。
5.wc
输出文件的行数、字(word)数、字节数。如果多于一个文件还将输出总行数。
常用选项:
-c 输出字节数
-m 输出字符数
-l 输出行数
-w 输出字(word)数
6.grep
从文本中搜索符合正则表达式的内容并显示。这里就不提正则表达式是多么的强大了,其规则可以单独写成一篇博文,并且很多人已经这么做过了。下面是一些用法启发,看完之后会让人觉得,原来这个“搜索”的需求的具体化如此多样。例子出于《程序设计实践》:
哪些文件里用到了类Regexp? %grep Regexp *.java
这个类的实现在哪个文件? %grep 'class.*Regexp' *.java
文件中有多少空行? %grep '.' *.c++ |wc
运行时间的统计和测定:time和gprof
如果需要gprof,在gcc时需要增加-pg选项,这时会生成一个gmon.out文件。
代码查错:gcc -Wall选项、lint
9.gcc -Wall
其他:strace