Linux高级命令---文件相关
vi:文件编辑利器
wc、unoq、sort、head:文件内容统计相关命令
vi命令
编辑文件内容
vi 文件名
可直接创建新文件
创建后I键编辑
ESC键结束编辑
:wq
w:保存
q:退出
q!:强制退出
cat 文件名
查找文件内容
复制粘贴
双击Y键复制光标所在行内容,点击P键粘贴至下一行
查找字符串
/要查找的字符串内容
N键下一项
快速删除
双击D键删除光标所在行
连按3次9,然后双击D键,删除光标所在行以及往后的所有内容
查找某一行内容
定位到某一行
:行号
显示行号
: set nu
快速跳到文件首行和末行
小写模式下,双击g键,光标跳转第一行
大写模式下,点击G键,光标跳转最后一行
文件异常退出情况
当操作为按操作退出时,再次使用vi命令编制文件会遇见下述情况
使用Enter键可正常进入文件界面,但下一次进入,该情况依然存在
问题分析
由于文件编制异常退出,系统产生临时文件
解决方法
把生成的临时文件删掉
该临时文件为隐藏文件,ll命令无法查看,需使用ll -a命令进行查找
rm -rf .hello.txt.swp
文件统计相关命令
wc:统计字数相关信息
查看字节数
wc -c 文件名
查看字符数量
wc -m 文件名
查看行数
wc -l 文件名
查看最长的一行的字符数
wc -L 文件名
查看不重复字符数
wc -w 文件名
wc - w 及 wc -c 统计包含换行符
uniq:检查重复的行列
文件内容
直接去查
uniq 文件名
统计字段出现次数
uniq -c 文件名
删除重复项
uniq -u 文件名
不难发现,上述方法并未把最后一个is 9 重复项识别出来
解决方法
写排序再去除
sort hello.txt | uniq
|操作符(管道):把前面的数据放至后方运算
sort:排序
按首字符排序
sort 文件名
按数值大小排序
sort -n 文件名
按照数值倒序
二者等价
sort -n -r 文件名
sort -nr 文件名
按某一列数值排序
sort -k 列数 -n 文件名
head:取前N条数据
默认返回前10条数据
head -返回数
常搭配管道使用
Linux高级命令---日期相关
直接获取日期
date
时间格式化
date +"%Y-%m-%d %H:%M:%S"
若格式化之间不存在空格,可不加双引号
获取时间戳
date +%s
秒数
date +%s"000"
毫秒
获取特定时间
date --date "特定日期"
获取特定时间时间戳
date --date "特定日期" + %s
获取前几天的时间
date --date="2 days ago"
获得某一年二月份的天数
解决思路
先定位到当年的三月一号,在获取前一天日期
date --date "2022-03-01 1 days ago" +%d
Linux高级命令---进程相关
ps:显示进程信息
显示系统所有进程
ps -ef
过滤进程信息
ps -ef | grep 进程种类
top:动态监控进程信息
- 主要作用在于动态显示系统消耗资源最多的进程信息;包含进程ID、内存占用、CPU占用等
- 和ps命令作用基本相同,唯一的区别是top命令能够动态显示进程信息
进入监控模式
top
点击Q键退出监测模式
netstat:显示端口信息
该命令默认未安装
netstat -anp
监听某端口
netstat -anp | grep 端口
kill:杀掉进程
杀掉进程,自杀
kill PID
强制杀掉进程,它杀
非必要不使用
kill -9 PID
PID可通过ps命令获取
jps:显示Java进程信息
- jps:类似ps命令,不同的是ps是用来显示所有进程信息的而jps只显示Java进程信息
- 准确的说jps是显示当前用户已启动的Java进程信息,信息包括进程号和简短的进程command
jps是Java提供的命令,只有在安装配置好Java环境后才能使用
Linux三剑客
grep:查找
·常用于查找文件里符合条件的字符串
·常和管道一起使用达成过滤
查找字符串是否存在与文件中
grep 字符串 文件名
cat 文件名 | grep 字符串
查询以字母开头的字符串
grep ^字母 文件名
由此可见,grep命令支持正则表达式
忽略大小写
grep -i 字符 文件名
显示该行的行号
grep -i 字符 -n 文件名
忽略包含指定字符串的内容
grep -v 字符串
sed:编辑
用来自动编辑一个或多个文件、简化对文件的反复操作
添加内容
向指定行下方增加数据
sed '行数a\内容' 文件夹
上述命令修改的是缓存区文件的内容,而不是直接修改源文件
向指定行上方增加数据
sed '行数a\内容' 文件夹
在最后一行上方添加数据
sed '$i\内容' 文件夹
删除内容
删除某一行参数
sed '行数d' 文件名
删除最后一行可把行数换为$
替换内容
hello.txt内容
sed 's/需要替换的字符/替换后的字符/flags' 文件名
flags使用
- 就是flags可以表示为1~512之间的任意一个数字,表示指定要替换的字符串在这一行中出现第几次时才进行替换
- 就是flags可以直接表示为g,这样的意识就是对每一行数据中所有匹配到的内容全部进行替换
- 如果flags位置的值为空,则只会在第一次匹配成功时做替换操作
替换指定行内容
sed '行数s/需要替换的字符/替换后的字符/flags' 文件名
永久修改在sed 后面加上-i即可
awk:分析
是一种处理文本的语言,是一个强大的文本分析工具
hello.txt里的内容
打印某一列数据
awk '{print $列数}' 文件名
$0 代表所有内容
指定字段分隔符
hello.txt文件内容
awk -F '{print $列数}' 文件名分隔符
正则表达式+awk
awk '/匹配内容/{操作}' 文件名
打印含有world字符的所有行
awk '/($列数 ~ 匹配内容)/{操作}' 文件名
查找某一列是否含有匹配内容