linux 的文件操作

不得不提 vi 文件编辑器了,除了vi 编辑器,还支持对文件的去重、排序、topN、字符统计

  • 查找字符串(找大日志):

如果我们想要在一个大文件中查找某一个字符串进行修改,按照我们现在学习的知识,通过vi命令打开文件,然后按键盘上的上下键来滚动光标一行一行肉眼扫描,这样如果碰到上万行的文件,你想哭都不知道该怎么哭了。在命令模式下,输入/,然后再输入你想要查询的字符串,最后按回车键就可以进行查询了,我们查询linux系统中自带的文件anaconda-ks.cfg

最后输入我们想要查询的字符串,root,按回车键即可进行查找,这个文件中其实有多个root字符串,如果第一次查找到的不是我们想要的,可以按n这个键继续向下查找。n表示next的意思,获取下一个匹配的字符串。

显示行号

先按shift和: 然后输入 set nu 这个时候就可以看到文件中显示了行号

  • 复制粘贴:

如果我们需要在文件中根据某一行内容快速复制几行,不用麻烦鼠标了,直接通过键盘操作就行,有研究表明,用键盘操作的效率比鼠标快10倍,使用vi命令打开hello.txt,把光标移动到希望复制的那一行内容上面,然后连按yy,这样就把这一行内容复制上了,然后按p就会把刚才复制的内容粘贴到下一行,按一次p粘贴一行,一直按到你喊停为止。最后按shift和: 输入wq保存退出即可。

  •  快速删除:

如果我们想删除文件中的某几行内容,默认可以进入编辑模式使用退格键删除,按一次删一个字符,这样按的时间长了手指头肯定抽筋啊,所以我们选择更加快捷的方式。进入命令模式,把光标定位到想要删除的那一行内容上面,连按dd,就可以删除当前行的内容。
还有一个大招,如果想要清空当前行下的所有内容,先连按999,然后再连按dd,这样就可以清空光标所在行下的所有内容了。

  • 快速跳到文件首行和末行:

在工作中有这种场景,一个配置文件有几千行内容,我们知道要修改的内容大致在最后几行,但是具体的行号和关键字都记不清楚了,这个时候难道就只能通过键盘的下箭头一行一行的来挪动光标吗?那还不崩溃了。

在命令模式下,通过大写的G可以快速将光标移动到最后一行。
当然了这个时候如果还要再回退到第一行,也很简单,在命令模式下输入小写的gg即可快速跳转到第一行。 

  • 常见的错误

linux 的文件操作_第1张图片

如上是上次没有正确保存文件,所以产生了临时文件,解决这个问题最直接最暴力的方式就是找到这个临时文件,把它干掉就可以一劳永逸了。
默认和这个原始文件在一个目录下面,只不过它是一个隐藏文件,通过ll命令看不到,这个隐藏文件的后缀名为.swp,我们通过ll -a就可以看到了,找到以后 使用rm删除掉即可。

  • 统计字符wc

参数 :

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

  • 排序sort

linux 的文件操作_第2张图片

-n的意思是按照数据的数值大小排序

-r 倒序需要使用-r 即 -nr

在-n的基础上增加-k 这个参数后面需要指定一个数字,这个数字表示是文件中的第几列,编号从1开始,不是从0开始

  • 检查重复uniq,有缺点:uniq只能对连续在一起的重复内容进行去重,那我们想要利用这个特性的话就需要先对数据进行排序,再去重

linux 的文件操作_第3张图片

先看一下-c参数,这个参数表示在输出行的前面加上数据在文件中重复出现的次数

还有一个-u参数,表示返回文件中不重复的行,针对hello.txt这个文件返回的是空,因为这个文件中的几行内容都是重复的。

缺点解决方案: 用到 | 管道符,通过管道可以把前面一个命令的输出结果传递给后面一个命令 

[root@localhost ~]# sort test.txt | uniq

abc
hello world!

  •  head:取前N条数据,可以把sort和head命令放在一块使用实现topN的效果

[root@localhost ~]# sort -nr num.txt | head -3

你可能感兴趣的:(linux,运维,服务器)