1. VI和VIM是文本编辑器,vim命令即可启动VIM编辑器。编辑特定文件,格式为:vim + 目标文件路径,如果目标文件存在,则vim打开该文件;如果不存在,vim新建并打开该文件。
2. vim有3中模式
(1) 命令模式:默认情况下为命令模式,通过键入不同命令完成选择、复制、粘贴、撤销等操作。
常见的命令有:
i:在光标前插入文本
a:如果将光标移动到行尾,输入“a”,光标就会越过行尾,vi进入插入模式。
A:移动到当前行的末尾,并且能添加文本。
o:在当前行的下一行插入新行
O:当前行的上方打开一行。
dd:删除当前行
u:撤销上一个操作
yy:将当前行的内容复制
p:将缓冲区的文本放入光标之后,即粘贴
P:将文本粘贴到光标之前。
n[+]yy:将该行(包括该行)下的n行内容复制
r:替换的当前字符
/:在整个文件中查找关键字,通过n命令来重复先前的查找。
f命令查找一行,移动到下一个所指定的字符上。在一行中执行了字符的查找命令之后,通过输入分号来重复这个查找。
(2) 插入模式:在命令模式下按"i"即可进入插入模式,在该模式下可编辑文本内容,按Esc键返回命令模式。
(3) ex模式:在插入模式下按“:”即可进入该模式,光标会移动到底部,可保存修改或退出vim
:w---保存当前修改
:q---直接退出
:q!---强制退出,不保存修改
:x---保存并退出
:set number---显示行号
:!---执行一系统命令并显示结果
:sh---切换到命令行,Ctrl+d则可以返回vim
注意:
真正的 vi 只是支持单层面的 undo 命令。vim 则支持多个层面的。
大写J用于把行与行之间连接起来。
:%s/Line/line/g
也可以指定一个需要用户确认的替换命令。通过添加一个”c”字符到这个命令的末尾,来完成这个替换命令。
:%s/line/Line/gc
替换确认按键
编辑多个文件:
vi file1 file2 file3...
从这个文件转到下一个文件,使用这个 ex 命令:
:n
回到先前的文件使用:
当我们从一个文件移到另一个文件时,如果当前文件没有保存修改,vi 会阻止我们转换文件,这是 vi 强制执行的政策。在命令之后添加感叹号,可以强迫 vi 放弃修改而转换文件。:N
可以查看正在编辑的文件列表,使用:buffers 命令。运行这个命令后,屏幕顶部就会显示出一个文件列表。
插入整个文件到另一个文件
这个:r 命令(是”read”的简称)把指定的文件插入到光标位置之前。
3. 基于关键字搜索
grep命令用于基于关键字搜索文本,如:grep 'linux' /etc/passwd find / -user linux | grep video
对应的参数有:
-i:搜索时忽略大小写
-v:输出不带关键字的行,相当于取反操作
-n:显示结果所在行数
-Ax:在输出的时候包含结果所在行之后的指定行数
-Bx:在输出的时候包含结果所在行之前的指定行数
在我们的程序列表中,找到文件名中包含单词"zip"的所有文件:ls /bin /usr/bin | sort | uniq | grep zip
4. 基于列处理文本
cut命令用于处理文本内容,如:cut -d:-f1 /etc/passwd 表示对passwd文件使用“:”作为分隔符分割成一列一列之后再显示其中的第一列,其中参数d表示分割符,默认为tab,参数f表示指定输出的列号
参数-c表示基于字符进行切割,如cut -c2-6 /etc/passwd
5. 文本统计
wc命令用于文本统计
参数
-l:只统计行数
-w:只统计单词
-c:只统计字节书
-m:只统计字符数
查看我们有序列表中程序个数:ls /bin /usr/bin | sort | uniq | wc -l
6.文本排序:sort
sort文件---表示基于每一行的首字母进行排序,也可对数字进行排序
参数:
-r:倒序排序
-n:基于数字排序
-f:忽略大小写
-u:删除重复行
-t c:使用c作为分隔符分别为列进行排序
-kx:当进行基于指定字符分割为列的排序时,指定基于哪个列排序
sort -u用于删除重复行,uniq用于删除重复的相邻行
7. 文本比较:diff
diff linux linux-new
参数:
-i:忽略大小写
-b:忽略空格数量的变化
-u:统一显示比较信息
diff -u linux linux-new > final.patch用于生成补丁文件
8. 拼写检查:aspell,只适于英文拼写
aspell check linux
aspell lixt < linux
9. 处理文本内容:tr
删除关键字:tr -d 'TMD' < linux
转换大小写:tr'a-z' 'A-Z' < linux
10.搜索替换:sed
sed 's/linux/unix/g' linux;其中s表示搜索,将linux替换为unix,g表示全局替换
sed '1,50s/linux/unix/g' linux;表示在linux文件中只查找1-50行,并将linux替换为unix
sed -e 's/linux/unix/g' -e 's/nash/nash1/g' linux
sed -f sededit linux
Linux学习笔记(十一)VI、VIM和文本处理
最新推荐文章于 2022-11-20 15:55:48 发布