1.grep

提取符合条件的行
常用用法:

  • grep +字符内容 +文件名 :直接筛选文件中带有指定字符内容的行
  • grep -v 字符内容 +文件名:-v取反 取文件中除了带有指定字符内容的行

2.cut

提取符合条件的列
常用参数:

  • -f 列号:提取第几列
  • -d 分隔符:按照指定分隔符分割列

示例1:
原文件:
grep 提取json 某个key的值 grep提取指定行_linux
使用cut -f 列数 文件名 提取指定列内容(注意:默认分隔符是tab键)
grep 提取json 某个key的值 grep提取指定行_shell_02

示例2:

原文件是/etc/passwd
使用cut -d 指定分隔符是“:”然后提取1,3列内容
grep 提取json 某个key的值 grep提取指定行_awk_03

示例3:
结合grep使用:
提取/bin/bash(可以登录)的用户:
grep 提取json 某个key的值 grep提取指定行_分隔符_04

注意:像以下情况,行之间不是连续相同的分隔符,使用cut就不合适了,就需要用到awk了
grep 提取json 某个key的值 grep提取指定行_分隔符_05

3.awk

在说awk之前,简单说一下printf的用法,因为在awk编程中,依赖printf输出结果。

基本用法:
printtf ‘输出类型输出格式’ 输出内容
grep 提取json 某个key的值 grep提取指定行_sed_06
grep 提取json 某个key的值 grep提取指定行_sed_07
(红线标注是常用的)

用法举例:
grep 提取json 某个key的值 grep提取指定行_sed_08
grep 提取json 某个key的值 grep提取指定行_awk_09
%s表示字符类型,这是三个一组,然后换行。

printf与print在awk中都支持,它们的区别就是print会在结尾自动加换行符,printf需要手动加\n。

注意:print与printf都是在awk程序之中使用的,Linux中默认是没有这两个命令的

接下来进入正题

awk命令

功能:截取符合条件的列

awk比cut复杂很多,功能也丰富很多
使用格式: (重点看下面的示例就明白了)

grep 提取json 某个key的值 grep提取指定行_awk_10

示例1:
grep 提取json 某个key的值 grep提取指定行_shell_11
说明:$0表示整行,$1表示第一列,$2表示第二列…
{}前面没有条件,所以是整个文本都执行{}里面的动作,即按照指定格式打印出了Name与Average的数据(文本是一行一行处理的)

示例2:
再来看一下上面cut没能完成的对df-h文件系统信息的提取
grep 提取json 某个key的值 grep提取指定行_linux_12
使用awk可以搞定。
再来看一个
grep 提取json 某个key的值 grep提取指定行_shell_13
结合了cut 显示了根分区内存使用量,可以应用于比如如果超过某个值,设置报警。

示例3:
加上BEGIN动作:
在程序执行的开始执行一次{}里的动作
grep 提取json 某个key的值 grep提取指定行_shell_14

下面这个例子,FS表示指定分隔符;如果不加BEGIN第一行root 0这行是不会做处理的,因为awk处理的时候会读入第一行数据,但这时FS=“:”设置分隔符的动作还没有执行

grep 提取json 某个key的值 grep提取指定行_awk_15
下图为不加BEGIN
grep 提取json 某个key的值 grep提取指定行_awk_16

示例4:
END:同BEGIN类似,在程序最后执行一次的动作
grep 提取json 某个key的值 grep提取指定行_sed_17
grep 提取json 某个key的值 grep提取指定行_分隔符_18
示例5:
支持关系运算

grep 提取json 某个key的值 grep提取指定行_sed_19
这里就是筛选出了平均成绩>87的同学

sed

sed是一个轻量级流编辑器。主要用来将数据进行选取,替换,删除,新增。

与Vi编辑器最大的区别是,sed可以与管道符结合使用,如图,后面会详细说;
并且,当我们在shell编程的时候,需要对一个文件内容进行更改,总不能用vim吧,所以shell编程中sed很常用。
grep 提取json 某个key的值 grep提取指定行_linux_20
grep 提取json 某个key的值 grep提取指定行_linux_21

grep 提取json 某个key的值 grep提取指定行_linux_22

示例1(使用-n输出):
-n只打印后面sed处理的行,2p是文件第2行,如图所见,-p一般都与-n一起使用
grep 提取json 某个key的值 grep提取指定行_sed_23
注意:sed中只要不加 -i 选项,操作都不会影响文件本身。

示例2:
动作的使用:
d删除,下图是删除2到3行;
a追加,在第二行之后追加了内容
i插入,在第2行之前插入内容
注意,这些操作都不影响文件内容本身
grep 提取json 某个key的值 grep提取指定行_shell_24
示例3:
-i选项,修改文件
下图中,把第4行99替换成了55
grep 提取json 某个key的值 grep提取指定行_shell_25