一、程序运行输入与输出
-
标准输入0
- read a;echo $a
-
标准输出1
- echo ceshiren.com
- echo ceshiren.com
-
错误输出
- ls not_exist_dir
- ls not_exist_dir
二、管道重定向
- 管道与管道之间可以重定向
- 管道与文件之间可以重定向
三、管道链接
3.1、管道连接符
- 管道链接符|可以链接多个程序的执行
- 管道链接是以子进程的方式启动的
curl https://ceshiren.com/categories.json \
| grep -o '{"id[^}]*}' \
| awk -F, '{print $2,$6}' \
| awk -F '"' '{print $7,$4}' \
| sed 's#:##' \
| sort -nr \
| head -5
3.2、管道链接的上下文控制
-
使用{command; }注意花括号与内部命令之间要有“;”和空格
-
使用控制逻辑while read组合
-
使用$()‘’
四、linux三剑客介绍
4.1、Linux三剑客
grep | awk | sed |
---|---|---|
global search regular exprssion(RE) and print out the line | 名称来源于三个作者的名字简称 | stream editor |
基于正则表达式查找满足条件的行 | 根据定位到的数据行处理其中的分段 | 根据定位到的数据行修改数据 |
4.2、三剑客与SQL的对比
Linux三剑客 | SQL Structrured Query Language |
---|---|
grep 数据查找定位 | select * from table like ‘%xx_’; |
awk 数据切片 | select field from table |
sed 数据修改 | update table set field=new where 条件 |
五、正则表达式
5.1、BRE基本正则表达式
- ^开头$结尾
- [a-z][0-9]区间,如果开头带有^则表示不能匹配区间内的元素
- *匹配0个或多个
- .表示任意字符
5.2、BRE扩展正则表达式
- ?非贪婪匹配
- +一个或多个
- ()分组
- {}范围约束
- |匹配多个表达式中一个