grep
按照文件中指定pattern的行
,语法:
# grep [选项] '关键字' 文件名
常见选项:
OPTIONS:
-i:不区分大小写
-v:反向选择
-n:显示行号
-w:搜索单词
-o:只打印单词
-e:使用正则匹配
-A:显示匹配行以及后面多少行
-B:显示匹配行以及前面多少行
-C:显示匹配行以及前后多少行
^key:以关键字开头
key$:以关键字结尾
--color=auto:高亮key
举例:
# 复制passwd文件到当前文件夹
cp /etc/passwd .
# 搜索所有不是root开头的行,不区分大小写并显示行号
grep -niv '^root' passwd
2:bin:x:1:1:bin:/bin:/sbin/nologin
3:daemon:x:2:2:daemon:/sbin:/sbin/nologin
4:adm:x:3:4:adm:/var/adm:/sbin/nologin
5:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6:sync:x:5:0:sync:/sbin:/bin/sync
7:shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8:halt:x:7:0:halt:/sbin:/sbin/halt
9:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10:operator:x:11:0:operator:/ROOT:/sbin/nologin
11:games:x:12:100:games:/usr/games:/sbin/nologin
12:ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
13:nobody:x:99:99:Nobody:/:/sbin/nologin
14:systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
15:dbus:x:81:81:System message bus:/:/sbin/nologin
16:polkitd:x:999:998:User for polkitd:/:/sbin/nologin
17:sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
18:postfix:x:89:89::/var/spool/postfix:/sbin/nologin
19:chrony:x:998:996::/var/lib/chrony:/sbin/nologin
20:nnlrl:x:1000:1000:nnlrl:/home/nnlrl:/bin/bash
21:dockerroot:x:997:994:Docker User:/var/lib/docker:/sbin/nologin
cut
cut是列
的截取工具,语法:
cut [选项] 文件名
常见选项:
-c:以字符为单位进行分割并截取
-d:自定义分隔符,默认为制表符\t
-f:与-d联用指定截取某一个区域
举例:
# 复制passwd文件到当前文件夹
cp /etc/passwd .
# 以:为分隔符截取第一列和第七列并通过管道符|传递给第二次cut操作,以字符为单位,截取5个字符
cut -d: -f1,7 passwd | cut -c 1-5 | head
root:
bin:/
daemo
adm:/
lp:/s
sync:
shutd
halt:
mail:
opera
sort
sort工具用于排序,它将文件的每一行作为一个单位,从首字符向后依次按照ASCII值进行比较最后升序输出。
语法:
sort [选项] 文件名 -o 指定文件
常见选项:
-u:去除重复行
-r:降序排列,默认是升序
-o:将排序结果输出到指定文件,类似重定向符>
-n:以数字排序,默认按字符排序
-t:分隔符
-k:第N列
-b:忽略前导空格
-R:随机排序
举例:
# 对passwd第三列进行数字降序排序,输出到1.txt
sort -nr -t: -k3 passwd -o 1.txt
# 等同于:sort -nr -t: -k3 passwd 1> 1.txt
cat 1.txt
operator:x:11:0:operator:/ROOT:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
halt:x:7:0:halt:/sbin:/sbin/halt
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
sync:x:5:0:sync:/sbin:/bin/sync
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
uniq
uniq用于去除连续的重复行,语法:
uniq [选项] 文件
常见选项:
-i:忽略大小写
-c:统计重复行次数
-d:只显示重复行
tee
接受输入打印并输出到指定文件中,双向重定向
diff
用于逐行比较文件的不同,diff描述两个文件不同的方式是告诉我们怎样改变第一个文件之后与第二个文件匹配
语法:
diff [选项] 文件1 文件2
常见选项:
-b:不检查空格
-B:不检查空行
-i:不检查大小写
-w:忽略所有空格
--normal:正常模式显示,默认格式
-c:上下文格式显示
-u:合并格式显示
举例:
diff -c file1 file2
*** file1 2020-07-12 16:07:25.188454248 +0800
--- file2 2020-07-12 16:07:51.352431341 +0800
***************
*** 1,6 ****
! aaaa 表示该行需要修改才能与第二个文件匹配
111
- hello world 表示该行需要删除才能与第二个文件匹配
222
- 333 表示该行需要删除才能与第二个文件匹配
bbb
--- 1,7 ----
! aaa 表示第一个文件需要修改才能与第二个文件匹配
! hello 表示第一个文件需要修改才能与第二个文件匹配
111
222
bbb
+ 333 表示第一个文件需要加上该行才能与第二个文件匹配
+ world 表示第一个文件需要加上该行才能与第二个文件匹配