Linux三剑客与管道

1.管道符"|"
Linux使用管道符将两个命令隔开,管道左边的输出会作为管道右边的命令输入
2.正则表达式 记录文本规则的代码
练习环境:https://tool.oschina.net/regex

image.png

image.png

grep
根据用户指定的模式(pattern)对目标文本进行过滤,显示被模式匹配到的行

选项

-v 显示不被pattern匹配到的行
-i 忽略字符大小写
-n 显示匹配的行号
-c 统计匹配的行数
-o 仅显示匹配到的字符串
-E 使用ERE,相当于egrep

sed(不修改文件内容,加-i参数会修改文件内容)
sed是流编辑器,一次处理一行内容

sed [-hn…][-e][-f][文本文件]
-h 显示帮助。
-n 仅显示script处理后的结果。

sed [-hnV][-e][-f][文本文件]
-e 以选项中指定的script来处理输入的文本文件。
-f 以选项中指定的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擅长取列


image.png

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列

你可能感兴趣的:(Linux三剑客与管道)