文档编辑

vi

这个命令初学者在使用的时候很容易出现各种各样的问题,因为大家平时在windows下面搞开发已经很熟悉了,对windows中的文件操作也是得心应手,但是刚刚上手Linux系统,可能对于命令行还不了解的时候就会有点蒙
首先我们创建一个新文件
vi_test.txt
image.png
紧接着用vi 操作文件
image.png
此时处于不可编辑模式,按i键开启编辑模式
image.png
写入内容
a
b
c
d
image.png
esc退出编辑,:wq保存退出
image.png
查找特点行的内容
image.png
进入编辑模式 按下shift加冒号: 输入具体的行号回车,光标就会到指定行
image.png
复制粘贴:如果我们需要在文件中根据某一行内容快速复制几行,不用麻烦鼠标了,直接通过键盘操作就行,有研究表明,用键盘操作的效率比鼠标快10倍
使用vi命令打开hello.txt,把光标移动到希望复制的那一行内容上面,然后连按yy,这样就把这一行内容复制上了,然后按p就会把刚才复制的内容粘贴到下一行,按一次p粘贴一行,一直按到你喊停为止。
最后按shift和: 输入wq保存退出即可。
image.png
快速删除:如果我们想删除文件中的某几行内容,默认可以进入编辑模式使用退格键删除,按一次删一个字符,这样按的时间长了手指头肯定抽筋啊,所以我们选择更加快捷的方式。
进入命令模式,把光标定位到想要删除的那一行内容上面,连按dd,就可以删除当前行的内容。
快速跳到文件首行和末行
在命令模式下,通过大写的G可以快速将光标移动到最后一行。
当然了这个时候如果还要再回退到第一行,也很简单,在命令模式下输入小写的gg即可快速跳转到第一行。
image.png

文件内容统计

首先修改hello.txt 加上一些内容
image.png

wc:统计字数相关信息

-c 是表示获取文件内容的字节数量
-m 表示获取字符数量
-L 是获取最长的一行内容的长度
-w 表示文件中单词的个数,默认使用空白符切割
image.png

sort:排序

sort命令是对数据进行排序的,它后面也支持很多个参数,我们在这里只讲三个
我们创建一个新的文件 num.txt
用sort 直接排序
用sort -n 排序
用sort -r 排序
image.png
image.png
直接sort 是按字符串来排序
-n是按照数值
-r是倒序

uniq:检查重复的行列

image.png

head -n 取前几条数据

image.png
比如我们想取Top3数据,可以这样操作
image.png
也可以这样操作
image.png

日期相关的高级命令(重点)

date:获取系统时间

image.png

date —help获取时间帮助文档

image.png

date +”%Y-%m-%d %H:%M:%S”

通过%Y,%m,%d这些参数可以对日期进行格式化
注意:date后面的这些参数中间如果没有空格,可以省略双引号。
image.png

date +%s

这里面的%s表示获取自1970-01-01 00:00:00以来的秒数
image.png
在工作中还有一个比较常见的需求,就是获取昨天的日期,这个需求也需要使用—date参数实现

date —date=”1 days ago”

image.png
再对返回的结果进行格式化,只获取年月日

date —date=”1 days ago” +%Y-%m-%d

image.png
后续其他需求,都可以在这上面进行扩展

进程

  • ps:显示进程信息
  • netstat:显示端口信息
  • jps:显示Java进程信息
  • top:动态监控进程信息

如果我们是学Linux运维的,那么这几个命令深究起来是有很多用法的,但是我们是搞开发的,我们只需要掌握一些常见用法够我们工作使用即可。

ps -ef:显示系统内的所有进程

image.png

ps -ef | grep java 过滤java进程信息

目前我们还没有java相关的进程
我们先过滤下python信息
ps -ef | grep python
image.png

netstat -anp |grep 端口号 显示进程和端口信息

yum install -y net-tools 先安装网络工具

image.png

实践:过滤22端口信息

image.png

jps命令

jps类似于ps命令,不同的是ps显示所有进程,而jps只显示启动的java进程信息。
jps是java提供的命令,只有在装好jdk环境后才有,所以目前我们执行不了,会报错,后续的大数据组件启动后都会有相关的java进程,所以jps命令也非常关键。

top命令:动态显示系统消耗资源最多的信息

image.png

按q退出监控模式

kill命令:关闭进程

windows中如果我们想关闭一个进程,那么需要打开任务管理器点结束任务即可
image.png
但是针对linux而言,它没有图形化界面
我们首先通过ps命令获取进程的pid之后
kill pid即可
kill pid 相当于我告诉你一声让你自杀,然后你就自己挥刀自杀了
kill -9 pid 针对不自觉的,没有自杀成功的,那我就直接亲自出马了,这就算是它杀了。

Linux三剑客命令

这三个命令用法很多,也非常繁琐,可能几天也讲不完,但针对我们学习大数据,学会基本的,剩下去扩展即可

grep

grep:常用于查找文件里符合条件的字符串

image.png

grep -i:忽略大小写查找

image.png

grep +正则表达式

过滤以h开头 忽略大小写的信息
image.png

grep -n 快速定位位置

image.png
过滤所有Python进程信息

ps -ef | grep python

image.png

sed

接下来我们看一下Linux的第二个剑客,sed
之前我们修改文件是使用vi命令,大家可以想象一个场景,如果让你同时去修改上千个文件里面的某一行内容,你再使用vi去操作,是不是有点手软,虽然这个上千个文件有点夸张,但是在实际工作中类似这样同时修改10几个文件的场景还是有的,大家不要想着,就10几个文件,我使用vi命令不到10分钟就搞完了,如果你这样想,那就完了,程序员一定要懒,这个懒是指能用程序去做的,千万不要动手。
假设你花费5分钟写一个自动化程序,然后可以在秒级别内解决掉这十几个文件,这样是不是还剩下5分钟时间,把这5分钟时间花在陪女神聊天上面难道不香吗?
首先看一下,如何通过sed命令向文件中添加一行内容,
我的需求是这样的,我想要在hello.txt文件的第二行内容下面添加一行内容

添加数据

image.png
image.png

注意了,sed 默认不会直接修改源文件数据,而是会将数据复制到缓冲区中,修改也仅限于缓冲区中的数据,最终把缓冲区内的数据输出到控制台
sed ‘1a\haha’ hello.txt 此操作会将数据添加到第一行下面(也就是第二行的位置)
sed ‘0a\haha’ hello.txt 此操作会报错,行号是从1开始的
a参数是在后面添加
i参数是在前面添加
image.png
我们可以通过一个特殊参数 $ 表示在最后一行添加
image.png

删除数据

删除文件中的第7行内容
image.png
$参数,,删除最后一行
image.png

替换操作

sed后面的参数格式为[address]s/pattern/replacement/flags
这里的address 表示指定要操作的具体行,是一个可选项
s 表示替换操作,pattern 指的是需要替换的内容,replacement 指的是要替换的新内容,flags有多种用法,我们挑两种说一下
第一种就是flags可以表示为1~512之间的任意一个数字,表示指定要替换的字符串在这一行中出现第几次时才进行替换
第二种就是flags可以直接表示为g,这样的意思就是对每一行数据中所有匹配到的内容全部进行替换
如果flags位置的值为空,则只会在第一次匹配成功时做替换操作
image.png
image.png
image.png
image.png
只替换指定内容:增加address参数即可
image.png

修改操作

加-i参数即可
举例:
image.png

awk

awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑
awk的基本格式:awk [option] programe file
这里的option是一个可选项,一般在这里来指定文件中数据的字段分隔符
programe 是具体的处理逻辑
file表示我们要操作的文件
在具体使用awk之前我们还需要掌握awk的一个特性,就是awk在处理文本数据的时候,它会自动给每行中的每个字段分配一个变量
变量从1开始,
$1表示是文本中的第1个数据字段
$2表示是文本中的第2个数据字段
以此类推。
还有一个特殊的 $0 它代表整个文本行的内容
我们来用awk操作 hello.txt
image.png

option里面指定字段分隔符,通过-F 参数

awk -F: ‘{print $1}’ /etc/passwd
image.png

awk ‘/hello/ {print $1}’ hello.txt

这种写法表示对每次读取到的那一行数据进行匹配
image.png

awk ‘($1 ~ /hello/) {print $1}’ hello.txt

在这里面可以通过$来指定具体是哪一列,需要把具体的对比逻辑放到小括号里面

image.png