【Shell编程】Shell中的正则表达式
【Shell编程】字符截取命令cut、printf命令
AWK 是一种处理文本文件的语言,是一个强大的文本分析工具。之所以叫 AWK 是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字符。
awk是先读取一行数据再执行条件,默认分隔符是空格个制表符。
awk ‘条件1{动作一} 条件2{动作2} …’ 文件名
一般使用关系表达式
| x>10 | 判断变量x是否大于10 |
|---|---|
| x>=10 | 大于等于 |
| x<=10 | 小于等于 |
这里的学生表文本和上面类似中间空格也必须要用tab,且tab要一样多。

还有一个是测试文本是姓名、年龄、性别的一个1.txt文本文件。
NR:表示行号
$0:表示整行**
命令:awk 'NR>1{print $0}' 1.txt
效果图:

NF:表示最后一列
命令:awk -F' ' '{print $(NF)}' 1.txt
效果图:

命令:awk '{printf $2 "\t" $6 "\n"}' student.txt
效果图:

命令:df -h | awk 'print $1 "\t" $5 "\t" $6'
效果图:

命令:df -h | grep sda2 | awk '{print $5}' | cut -d "%" -f 1
效果图:

会在输出结果前,先执行一个动作 仅仅·1执行一次
命令:awk 'BEGIN {print "test !!"} {print $2 "\t" $5}' student.txt
效果图:

awk是先读取一行数据再执行条件

所以我们需要让FS先执行

在命令最后执行

当第六列成绩大于等于87就输出名字

print :会在每一个输出之后自动加入一个换行符(Linux默认没有print)printf :是标准格式输出命令,并不会自动加入换行符,如果需要换行,需要手工加入换行符。sed命令是一种几乎包含在所有unix平台(包括Linux)的轻量级流编辑器,sed主要是用来将数据进行选取、替换、删除、新增的命令。
sed [选项] ‘[动作]’ 文件名
| 参数 | 说明 |
|---|---|
| -n | 一般sed命令会把所有数据都输出到屏幕,如果加入此选项,则只会把经过sed命令处理的行输出到屏幕。 |
| -e | 允许对输入数据应用多条命令编辑 |
| -i | 用sed的修改结果直接修改读取数据的文件,而不是由屏幕输出。 |
| 参数 | 说明 |
|---|---|
| a\ | 追加,在当前行后添加一行或多行。添加多行时,除最后一行外,每行末尾需要用“\”代表数据未完结 |
| c\ | 行替换,用c后面的字符穿代替原数据行,替换多行时,除最后一行外,每行末尾需要用“\”代表数据未完结 |
| i\ | 插入,在当前行前插入一行或者多行,插入多行时,除最后一行外,每行末尾需要用“\”代表数据未完结 |
| d | 删除,删除指定行 |
| p | 打印,输出指定行 |
| s | 字串替换,用一个字符串替换另外一个字符串,格式为:“行范围s/旧字串/新字串/g”(和vim中替换有点相似) |
文件名为student.txt

命令:sed '2p' student.txt
效果图:

加-n只会只打印你需要的
命令:sed -n '2p' student.txt
效果图:

命令:df -h | sed -n '2p'
效果图:

命令:sed '2,4d' student.txt
效果图:

命令:sed '2a hello' student.txt
效果图:

命令:sed '2i hello \ world' student.txt
效果图:

命令:sed '2c No such' student.txt
效果图:

命令:sed 'lihaha' student.txt
效果图:

命令:sed 'lahaha' student.txt
效果图:
命令:sed ‘s/张三/hi/g’ 1.txt
效果图:

命令:sed ‘1chello’ 1.txt
效果图:

命令:sed -n ‘1p;3p’ 1.txt
效果图:

命令:sed -n ‘1d’ 1.txt
效果图:

命令:sed -n ‘1,3p’ 1.txt
效果图:

命令:sed -n ‘1,2d’ 1.txt
效果图:
