文本处理三剑客
grep awk sed
global regular expression and print
全局正则表达式搜索然后打印
打印的特点:所在行输出
cat jsetc | grep jsetc 把jsetc出现的行全部打印
| 被称为叫管道(把输出的内容加载到后面的命令里)
重定向 > (把文件保存 后为定向)
cat jsetc > hello
正则表达式是用约定好的某些符号去表示某个含义
普通正则表达式 定了一些基础的符号及其含义
扩展正则表达式,除了基础的符号,又扩展了更多的符号
定义的符号越多,我们过滤出想要的内容就越快,但需要去记住更多的语法
正则表达式的 * 前面一个字符出现0次或多次
正则表达式的 . 任意字符
^ 非
^xx 以xx开头 xxKaTeX parse error: Expected group after '^' at position 7: 以xx结尾 ^̲ 查找有多少个空文本
| wc -l (查找的结果的行数)
查找. grep .
网络上可以查找现成的正则表达式
类似电话号码 ip地址等等
网络查找shell正则表达式
grep -v 反向查找(没有指定内容的)
grep -n 可以显示结果所在的行号
grep -o 不做显示
grep 偏向于行处理
awk 偏向于列处理,会把一行分成多个列
“hello1;hello2;hello3” 以;分割 分为三列
可找到最直接的目标信息
awk也有变量,数组,判断,循环等语法,awk内置了实用函数
awk:列处理,列过滤
自动以空白作为间隔
$1 $2 $3是一二三列
$0是整行
NR是当前处理到第几行(也即输出行数)
(可以过滤信息 在awk内部继续grep)
查找一个工程目录下有多少个.c文件
查看一个工程目录下所有.c文件行数的和
BEGIN{}大括号里只运行一次,在文本处理开始前运行
END{}大括号里只运行一次,在文本处理结束后运行
awk内嵌很多语法与C相同
awk使用 -F指定分隔符
默认分隔符是多个空白 空格或tab
awk传参
age=30 在后可以使用age变量(类似宏替换)