我们通常所说的shell脚本三剑客指:grep、awk、sed。因为这三个命令经过添加选项或者变形能够对文本进行较多的操作,所以也是我们在使用shell脚本时必不可少的命令。
Grep:
Grep是我们常用的行提取命令,它的作用对象是文件,grep本身是不能使用正则的,但是加了-e选项或者egrep是可以使用正则的,使用的格式是grep -e “条件” 文件或者egrep “条件”文件。条件可以是正则表达式或者字符串等,通过特定的条件来过滤文件中特定的字符串。
Awk:
Awk是一个集行提取和列提取的命令,不同于cut命令,在不指定的情况下只能识别tab空格的字符串,awk可是识别任意空格作为分割的字符串。当然awk也有如同cut -d指定分隔符的模式,awk使用的是-F。
Awk的使用是由特定格式的:awk 选项(一般指定分隔符时使用-F)‘条件{printf输出内容“\n”}’文件。其中的条件可以时指定行号、行号范围,也可以是刚开始的输入BEGIN和最后的输出END,注意,在输入时需要用大写。对于输出内容可以是指定的列号、或者行号数(NR)等。其中条件和{}中的内容是可以在一个命令中重复的,可以使用一条awk命令输出多个条件指定的内容,注意在输出内容中加上“\t”或者“\n”,这样输出的内容才会更加的有条例。
Awk的具体使用可以见下图:
Sed:
Sed命令主要用来将数据进行选取、替换、删除、新增的命令等。Sed命令在使用过程中一次只能读取一行进行处理。但是sed默认并不会对源文件进行修改,只是对文件的输出内容进行修改,称之为模式空间。如果想要使用sed对源文件进行修改,就需要添加-i选项。Sed命令的使用格式:sed 选项 ‘[动作]’文件名。Sed具体使用如下: