这些年用过的unix commands

在日常开发中, 通常会写一些自动化的脚本, 特别是文本自动化的脚本经常写。 而linux commands 在完成自动化工作的作用特别大。 

下面我会总结一下我使用过的Linux commands。 

1. 文件查看命令: cat , more , less, tail 和 head 。 这几个命令都可查看一个文件, 但是功能略微不同。 cat 适合查看一个较小的文件。 more 和 less 可以自动分页, 所以适合查看比较大的文件, 并且提供了上一页和下一页的翻页功能。 tail 和 head 也是很常见的查看命令, tail 用于查看文件末尾, head 用于查看文件开头。

2. 文本编辑命令:  sed, awk。 这两个命令在文本自动化工作方面赫赫有名。 sed 用于文本自动化的增删改查, sed最重要的功能就是基本正则表达式的文本替换。 awk 的侧重点则不同, awk的优势在于处理固定格式的文件, 如 csv。 awk 可以进行数据的 过滤, 聚集,如可以求和, 也可以求平均值, 适用于数据分析。如果要简单的实现一个对账系统, sed 和 awk 是一个很好的选择。 

3. 其他文件编辑命令: cut, tr。  cut 用于提取文件中每一行的一部分字符串, 例如一个csv文件, 可以用cut 提取某一个field。 tr 可以进行文本的替换, 可以把tr当做低级版的sed。 如 tr "abc" "xyz", 这个命令就把字符串中的a 替换成 x, b 替换成 y, c 替换成 z 

4. 文本比较命令: comm, diff。  comm 用于比较两个文件 common content 和 different content, 对账系统通常会用到这个命令。  diff 和 comm 很类似, 用于比较两个文件的不同之处, 通常可以用来作为文件的版本控制。 

5. 文本的拆分和合并: split, csplit, join。  split 和 csplit 都可以用于拆分一个文件为若干个小文件。 split 可以基于文件大小拆分, csplit 可以基于正则表达式拆分。 join 类似于关系型数据库的join 操作, 把相同的行join 起来。 

6. 与目录有关的命令: basename, dirname。 这两个命令接受的输入都是一个目录字符串, basename 返回文件名 , dirname 返回当前文件的目录。 

7. 排序和去重: sort , uniq。 sort 用于文本的排序, 如获取某个目录下的最大文件, 就可以用sort。 uniq 则用于去重。

8. 统计单词数量: wc  用于统计文本单词数量 或者字符数量。 

9. xargs:这个命令是非常强大的,通常跟find 或者grep 组合起来使用。 如要删除所有的log 文件 find -type f "*log" | xargs rm 

10. 文件文本的搜索: find 和 grep。  文本搜索是非常常用的功能, find 支持搜索文件, grep 支持搜索文本。 

你可能感兴趣的:(这些年用过的unix commands)