1.管道符"|"
Linux使用管道符将两个命令隔开,管道左边的输出会作为管道右边的命令输入
2.正则表达式 记录文本规则的代码
练习环境:https://tool.oschina.net/regex
grep
根据用户指定的模式(pattern)对目标文本进行过滤,显示被模式匹配到的行
选项
-v 显示不被pattern匹配到的行
-i 忽略字符大小写
-n 显示匹配的行号
-c 统计匹配的行数
-o 仅显示匹配到的字符串
-E 使用ERE,相当于egrep
sed(不修改文件内容,加-i参数会修改文件内容)
sed是流编辑器,一次处理一行内容
sed [-hn…][-e][-f<script文件>][文本文件]
-h 显示帮助。
-n 仅显示script处理后的结果。
sed [-hnV][-e][-f<script文件>][文本文件]
-e 以选项中指定的script来处理输入的文本文件。
-f<script文件> 以选项中指定的script文件来处理输入的文本文件。
a :新增 sed -e ‘4 a newline’
c :取代 sed -e ‘2,5c No 2-5 number’
d :删除 sed -e '2,5d’
i :插入 sed -e ‘2i newline’
p :打印 sed -n ‘/root/p’
s :取代 sed -e 's/old/new/g’
awk
把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行后续处理
awk ‘pattern + action’ [filenames]
-pattern 正则表达式
-action 对匹配到的内容执行的命令(默认为输出每行内容)
FILENAME awk浏览的文件名
BEGIN 处理文本之前要执行的操作
END 处理文本之后要执行的操作
FS 设置输入域分隔符,等价于命令行 -F选项
NF 浏览记录的域的个数(列数)
NR 已读的记录数(行数
~ 包含
!~ 不包含
== 等于,必须全部相等,精确比较
!= 不等于,精确比较
&& 逻辑与
|| 逻辑或
+ 匹配时表示1个或1个以上
/[0-9][0-9]+/ 两个或两个以上数字
/[0-9][0-9]*/ 一个或一个以上数字
OFS 输出字段分隔符, 默认也是空格,可以改为其他的
ORS 输出的记录分隔符,默认为换行符,即处理结果也是一行一行输出到屏幕
-F [:#/] 定义了三个分隔符
OFS 输出域分隔符
ORS 输出记录分隔符
RS 控制记录分隔符
// 匹配代码块 可以是字符串或者正则表达式
{} 命令代码块 包含一条或多条命令,多条命令用;隔开
Begin{} 初始化代码块,在对每一行进行处理之前,初始化代码,主要是引用全局变量,设置FS分隔符
END{} 结尾代码块,在对每一行进行处理之后再执行的代码块,主要是进行最终计算或输出结尾摘要信息
$0 整条记录
$1表示当前的第一个域
grep擅长查找功能
sed擅长取行和替换
awk擅长取列
log.txt的内容如下:
2,this,is,a,test
3 Are you like awk
$ awk -F, '{print $1,$2}' log.txt
2 this
3 Are you like awk
使用多个分隔符.先使用空格分割,然后对分割结果再使用","分割
$ awk -F '[ ,]' '{print $1,$2,$5}' log.txt
2 this
3 Are
sort 排序
sort -n按字符串数值排序
sort -r反转排序 sort nr
uniq 去重
uniq -c去重后 统计出现的次数并在前面标注
head -n打印前n列