Linux三剑客与shell管道使用

一、程序运行输入与输出

  • 标准输入0

    • read a;echo $a
  • 标准输出1

  • 错误输出

    • ls not_exist_dir
      image

二、管道重定向

  • 管道与管道之间可以重定向
  • 管道与文件之间可以重定向
    image
    image

三、管道链接

3.1、管道连接符

  • 管道链接符|可以链接多个程序的执行
  • 管道链接是以子进程的方式启动的
    image
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

image

3.2、管道链接的上下文控制

  • 使用{command; }注意花括号与内部命令之间要有“;”和空格
    image

  • 使用控制逻辑while read组合
    image

  • 使用$()‘’

四、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扩展正则表达式

  • ?非贪婪匹配
  • +一个或多个
  • ()分组
  • {}范围约束
  • |匹配多个表达式中一个