一、cut
cut
是一个选取命令,就是将一段数据经过分析,取出我们想要的。一般来说,选取信息通常是针按 “行” 来进行分析的。cut
命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段送到标准输出。
常用参数:
-
-b
:以字节为单位进行分割 -
-c
:以字符为单位进行分割 -
-d
:自定义分隔符,默认为制表符 -
-f
:与-d
一起使用,指定显示哪个区域
举个例子:
shiyanlou:~/ $ head -n 3 /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
# 以冒号作为分隔符,取第一段和第六段
shiyanlou:~/ $ head -n 3 /etc/passwd | cut -d : -f 1,6
root:/root
daemon:/usr/sbin
bin:/bin
# macOS 的例子
~/test nl a.txt
1 _analyticsd:*:263:263:Analytics:/var/db/analyticsd:/usr/bin/false
2 _fpsd:*:265:265:FPS Daemon:/var/db/fpsd:/usr/bin/false
3 _timed:*:266:266:Time Sync Daemon:/var/db/timed:/usr/bin/false
~/test cut -f 1,6 -d : a.txt
_analyticsd:/var/db/analyticsd
_fpsd:/var/db/fpsd
_timed:/var/db/timed
# 前五个(包含第五个)
$ cut /etc/passwd -c -5
# 第五个之后的(包含第五个)
$ cut /etc/passwd -c 5-
# 第五个
$ cut /etc/passwd -c 5
# 2到5之间的(包含第二、五个)
$ cut /etc/passwd -c 2-5
二、sort
sort
命令在Linux
里非常有用,它将文本数据进行排序,并将排序结果标准输出。sort
命令既可以从特定的文件,也可以从stdin
中获取数据。
默认为字典排序:
$ cat /etc/passwd | sort
反转排序:
$ cat /etc/passwd | sort -r
按特定字段排序:
$ cat /etc/passwd | sort -t':' -k 3
上面的 -t
参数用于指定字段的分隔符,这里是以 :
作为分隔符;-k
字段号用于指定对哪一个字段进行排序。这里 /etc/passwd
文件的第三个字段为数字,默认情况下是以字典序排序的,如果要按照数值排序就要加上 -n
参数:
$ cat /etc/passwd | sort -t':' -k 3 -n
三、uniq
uniq
可以用来按行去重
3.1 简单例子:
~/test cat a.txt
vim
vim
vim
vimtutor
virtualenv
wc
wc
wget
wget
wget
which
~/test cat a.txt | uniq
vim
vimtutor
virtualenv
wc
wget
which
~/test uniq a.txt # 同上
vim
vimtutor
virtualenv
wc
wget
which
3.2 -u
显示无重复的行:
~/test cat a.txt | uniq -u
vimtutor
virtualenv
which
3.3 -d
显示有重复的行:
~/test uniq -d a.txt
vim
wc
wget
3.4 -c
显示每行重复的次数:
~/test cat a.txt | uniq -c
3 vim
1 vimtutor
1 virtualenv
2 wc
3 wget
1 which
3.5 综合命令:
history | cut -c 8- | cut -f 1 -d ' ' | sort | uniq -c | sort -n | wc -l
网友评论