cut,sort,uniq,du 命令

cut

从文件的每一行抽出一部分。

常用选项:

  • -d 指定分隔符,如: -d: 指定冒号为分隔符。
  • -f 指定要抽取的字段,可以用逗号分隔要选取的字段,也可以用-指定要选取的字段范围,如: -f1,2抽取第1、2个字段, -f1-3抽取第[1-3]的字段。
  • -c 抽取指定范围的字符,包含起始位置,如: -c9-抽取第9个及以后的的字符, -c1-3,22-抽取第1-3以及第22及个以后的字符。

举例:

  • cut -d: -f1,6 /etc/passwd
  • cut -c2- /etc/passwd
  • cut -c1-5,22- /etc/passwd

sort

对文本文件的每一行进行排序,默认按ASCII的字符升序排序。

常用选项:

  • -f 把小写字母转换为大写字母来比较。
  • -i 忽略非字母。
  • -h 人类可读数字排序,如:3k < 2M < 1G
  • -n 按数字排序。
  • -r 降序排序。
  • -R 随机排序。
  • -k 按指定字段排序,如 -k 2 表示按第二个字段排序。

uniq

对已排序好的文件删除重复行或统计重复次数。

常用选项:

  • -d 只输出重复行。
  • -c 计算每一行重复的次数。输出结果是两列: 重复次数 行内容

举例:

  • echo -e "1\n1\n1\n2\nx\ny" | uniq -d 只会输出: 1

  • echo -e "1\n1\n1\n2\nx\ny" | uniq -c, 输出结果如下:


      3 1
      1 2
      1 x
      1 y

du

du 命令用于查看目录下文件及文件夹的大小(粗略,非精确, estimate)。

有用的选项:

  • -h 以人类可读的单位显示大小,如1.1K, 1.2M, 1.3G。
  • -s 为每个参数显示一个总和。如: du -s * 则显示当前目录下文件及直接子目录的大小。
  • -b -k -m 分别表示以 B KB MB 为单位。
  • –exclude=pattern 排除匹配模式pattern的文件。
  • –time 显示文件或目录的最后修改时间。

举例:

du -sh * 命令的输出虽然是可读的,但却没有排序,下面两个脚本是按大小排序的可读格式输出:

  • for x in K M G; do du -sh * | grep -P “^[1-9]+\.?[0-9]*$x” | sort -n; done
  • du -sh * | sort -h

欢迎关注我的微信公众号: coderbee笔记,可以更及时回复你的讨论。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据