【shell】shell指令学习

仅供本人自学,完全从自己可以理解的角度写的,知识点都是copy网上已有的学习资料,侵权请联系本人删除,谢谢。

1. 文本资料学习

学习Linux,从掌握grep、sed、awk开始吧。
Linux文本三剑客超详细教程—grep、sed、awk

grep更适合单纯的查找或匹配文本,sed更适合编辑匹配到的文本,awk更适合格式化文本,对文本进行较复杂格式处理。

开始copy知识点:

(1) grep

grep可用于shell脚本,因为grep通过返回一个状态值来说明搜索的状态,如果模板搜索成功,则返回0,如果搜索不成功,则返回1,如果搜索的文件不存在,则返回2。我们利用这些返回值就可进行一些自动化的文本处理工作。
egrep = grep -E:扩展的正则表达式 (除了< , > , \b 使用其他正则都可以去掉\)
【shell】shell指令学习_第1张图片
【shell】shell指令学习_第2张图片

正则表达式:
【shell】shell指令学习_第3张图片
(2) sed

功能:主要用来自动编辑一个或多个文件, 简化对文件的反复操作
【shell】shell指令学习_第4张图片
sed里单引号和双引号的作用区别:
双引号里可以使用shell里的变量;单引号不能。
单引号和双引号里都可以存放模式。
【shell】shell指令学习_第5张图片
【shell】shell指令学习_第6张图片
【shell】shell指令学习_第7张图片
【shell】shell指令学习_第8张图片
【shell】shell指令学习_第9张图片
【shell】shell指令学习_第10张图片
【shell】shell指令学习_第11张图片
练习题:

shell命令三剑客之sed命令详解

显示文件的第一行,第二行
sed -n ‘1,2p’ sed.txt 或者
sed -n ‘3,$!p’ sed.txt
显示文件的第二行至第五行
sed -n ‘2,5p’ sed.txt 或者
sed -n ‘2,+3p’ sed.txt
显示文件的1,3,5行
sed -n ‘1p;3p;5p’ sed.txt

加入模式
显示包含2的行
sed -n ‘/2/p’ sed.txt
不显示1开头的行
sed -n ‘^1!p’ sed.txt
显示以2结尾的行
sed -n ‘/2$/p’ sed.txt
显示以1和3开头的行
sed -n ‘/ ^ [1,3]/p’ sed.txt

commend操作: d 删除操作
删除空行和注释
sed -r ‘/^$/ ^#/d’ sed.txt 操作:-r 支持扩展正则表达式
删除空行再删除注释
sed -e ‘/^ $/d’ -e ‘/^#/d’ sed.txt 或者
sed ‘/^ $/d;/^#/d’ sed.txt

commend操作: r 读入操作
在sed.txt文件的末尾后面读入/etc/passwd文件的所有内容
sed '/$r /etc/passwd/ sed.txt

commend操作:w 写入操作
将文件/etc/passwd的第一行写到sed.txt文件中
sed ‘1w sed.txt’ /etc/passwd

commend操作:s 替换操作
将sed.txt文件中的空格全部替换为冒号
sed ‘s/ /:/g’ sed.txt
在文件sed.txt的2到3行前面加上注释
sed -n ‘2,3s/^/#/p’ sed.txt
在文件sed.txt的每行末尾加上问号
sed -n ‘s/$/?/p’ sed.txt

(3) awk

awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入(stdin)、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。awk有很多内建的功能,比如数组、函数等,这是它和C语言的相同之处,灵活性是awk最大的优势。

下面记录博主斯言甚善 写的博文:awk命令的操作,看这一篇文就够了
awk工作流程可分为三个部分:
读输入文件之前执行的代码段(由BEGIN关键字标识);
主循环执行输入文件的代码段;
读输入文件之后的代码段(由END关键字标识)。
【shell】shell指令学习_第12张图片
【shell】shell指令学习_第13张图片

2. 视频学习

哔哩哔哩上面观看黑马程序员老师讲的视频,发现正是自己需要的,讲得浅显易懂,我能够学进去对自己而言就是最好的学习资料。附上视频链接如下:

https://www.bilibili.com/video/BV1st411N7WS?p=4&spm_id_from=pageDriver

下面都是我观看视频后的一些笔记(主要是截频)

软件包管理:yum工具

网络协议:
【shell】shell指令学习_第14张图片
ssh:远程管理协议
scp: 数据同步,不能实现数据的实时同步
文件共享服务

shell通配符
shell小工具的使用:grep、cut、sort
grep:行过滤工具
【shell】shell指令学习_第15张图片
【shell】shell指令学习_第16张图片

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
打印行号
【shell】shell指令学习_第17张图片
【shell】shell指令学习_第18张图片
cut:列截取
截取每行的第5个字符
在这里插入图片描述
指定冒号":"分隔符,截取第一列和第三列
在这里插入图片描述
【shell】shell指令学习_第19张图片
【shell】shell指令学习_第20张图片
只去除重复连续的行

【shell】shell指令学习_第21张图片
tee默认是覆盖写入文件,加“-a”是追加写入
【shell】shell指令学习_第22张图片
在这里插入图片描述
【shell】shell指令学习_第23张图片
【shell】shell指令学习_第24张图片
在这里插入图片描述
【shell】shell指令学习_第25张图片
【shell】shell指令学习_第26张图片
【shell】shell指令学习_第27张图片
【shell】shell指令学习_第28张图片
【shell】shell指令学习_第29张图片

【shell】shell指令学习_第30张图片
【shell】shell指令学习_第31张图片
在这里插入图片描述
【shell】shell指令学习_第32张图片
【shell】shell指令学习_第33张图片
【shell】shell指令学习_第34张图片
【shell】shell指令学习_第35张图片
awk是一种编程语言,主要对文本及数据进行处理的。逐行扫描的,从第一行到最后一行,寻找匹配特定模式的行,找到后进行想要的操作。
print是awk的打印函数,可以匹配正则表达式。
【shell】shell指令学习_第36张图片
gawk是awk的GNU版本。awk软链接到gawk。
【shell】shell指令学习_第37张图片
统计网站的访问量、IP量。
支持条件判断、循环,比sed强大很多。
【shell】shell指令学习_第38张图片
单引号中可以使地址定位也可以使执行指令
【shell】shell指令学习_第39张图片
【shell】shell指令学习_第40张图片
【shell】shell指令学习_第41张图片
【shell】shell指令学习_第42张图片
打印出文件的所有行:
在这里插入图片描述
打印文件的第一行至第五行:
NR:地址定位
在这里插入图片描述
不加打印peint动作,默认也会打印出来
在这里插入图片描述

打印出第一行或者第五行:
在这里插入图片描述
打印出以冒号分隔的第一列到最后一列:
$NF是最后一列
在这里插入图片描述
打印出以冒号分隔的第一列到最后一列,以及打印出倒数第二列:
在这里插入图片描述
打印出文件的列数,awk是逐行处理文本的
在这里插入图片描述
练习题:
【shell】shell指令学习_第43张图片
awk是逐行处理文本的
NR1,NR5和/^root/是两个条件,第一个是第一行的内容,第二个是第五行的内容,第三个是以root开头的行,满足这几个条件的行都会被打印出来。
【shell】shell指令学习_第44张图片
awk按照分隔符打印出来之后,默认以“空格”分割

用“OFS”指令指定分割符
在这里插入图片描述
定义输入间隔符和输出间隔符
在这里插入图片描述
不定义输入间隔符,用双引号引起来输出间隔符
【shell】shell指令学习_第45张图片
RS:定义换行,awk默认换行符结尾的就是一行
RS和ORS了解即可,最常用的是“FS”和“OFS”
【shell】shell指令学习_第46张图片
【shell】shell指令学习_第47张图片
print函数会自动换行,printf函数默认不会在结尾自动换行,要加“\n",echo默认不会换行,echo -n才会自动换行
【shell】shell指令学习_第48张图片
【shell】shell指令学习_第49张图片
awk中定义变量,变量前不需要加$符号

打印变量3,后面跟了文件名称,awk每行都打印出变量3
【shell】shell指令学习_第50张图片
不敲BEGIN,敲一下回车键打印出一个变量3
【shell】shell指令学习_第51张图片
【shell】shell指令学习_第52张图片
【shell】shell指令学习_第53张图片
正则表达式
【shell】shell指令学习_第54张图片
【shell】shell指令学习_第55张图片
打印1至5行并且包含以root开头的行
在这里插入图片描述
前导字符出现一次或多次
【shell】shell指令学习_第56张图片
【shell】shell指令学习_第57张图片
$(id -u)==0
在这里插入图片描述
【shell】shell指令学习_第58张图片
【shell】shell指令学习_第59张图片
【shell】shell指令学习_第60张图片
【shell】shell指令学习_第61张图片
计算1-10以内奇数的和
【shell】shell指令学习_第62张图片
使用awk实现:计算1-10以内奇数的和
在这里插入图片描述
awk处理的对象是文本或者数据,管道符前面的是awk的处理对象,处理对象是数据,每处理一行的数据就将数据赋值给$0
【shell】shell指令学习_第63张图片
【shell】shell指令学习_第64张图片
【shell】shell指令学习_第65张图片

【shell】shell指令学习_第66张图片

你可能感兴趣的:(学习,shell,Linux)