Linux之文本处理
一、文本编辑器
在Linux系统中,即使在控制台命令行状态下,也需要进行大量的文本处理工作。Linux系统中几乎所有的配置文件都是以纯文本形式存在的,我们也要对这些文件进行编辑工作。Linux上常见的文本编辑器有vi、vim、ed、gedit、emacs等。本章介绍的文本编辑器就是平常使用最多的vim文本处理器。
vim简介
在命令行输入vim
[root@bogon Desktop]# vim
出现以下界面就是vim编辑器的界面
vim有三种工作模式
1.命令模式
使用vim打开任何一个文件,如
[root@localhost tmp]# vim sdn蜀道难
进入vi编辑器时,首先进入命令模式(command mode)。在命令模式下,从键盘输入任何字符都被当作命令来解释。在命令模式下,可以完成复制、粘贴、选择、删除、撤销等命令。输入命令后vim会立即执行,不需要回车,而且输入的字符不会在屏幕上显示出来。
2.插入模式
主要用于文本的编辑。该模式下用户输入的任何字符都被作为文件的内容保存起来,并在屏幕上显示出来。进去命令模式后,按字母i键或a键,进入插入模式。
插入模式有一个–insert–标识
在插入模式下,输入Esc键会返回到命令模式。
3.末行模式
命令模式下的命令可以完成很多功能,但要执行一些如保存当前修改并继续编辑、保存并退出vim环境、不保存修改退出vim环境、显示行号等操作还是必须要进入末行模式。在命令模式下用户可以按键盘的shift加:进入末行模式,在末行模式下我们可以进行保存修改或退出vim,也可以环境设置、列出行号、寻找字符串等对文件进行一些高级处理。
底行模式在打开vi编辑器后,文件的下面,有一个标识
在末行模式下按Esc键会退回命令模式
vim编辑器使用
命令模式下
命令 | 操作 |
---|---|
yy | 复制当前行 |
y0 | 复制当前字符到当前行的起始 |
y$ | 复制当前字符到当前行的末尾 |
yG | 复制当前行到文件末尾的内容 |
n+yy | 复制n行 |
p | 粘贴 |
x | 删除当前字符 |
X | 删除前一个字符 |
dd | 删除当前行 |
d$ | 删除当前字符到当前行的末尾 |
d0 | 删除当前字符到当前行的开始 |
dG | 删除当前行到文件末尾 |
u | 撤销上一个操作 |
r | 替换当前字符 |
h或左方向键 | 左移一位 |
l(小写L)或右方向键 | 右移一位 |
j或下方向键 | 下移一位 |
K或上方向键 | 上移一位 |
^ | 移动到光标所在行的“行首” |
$ | 移动到光标所在行的“行尾” |
gg | 移动到文件开头 |
G | 移动到文件最后 |
w | 移动到下个单词的开头 |
b | 移动到上个单词的开头 |
e | 移动到当前单词的字尾 |
H | 移动到屏幕最上面一行 |
M | 移动到屏幕中间一行 |
L | 移动到屏幕最下面一行 |
插入模式
在命令行模式下按一下字母i或a就可以进入插入模式,这时候你就可以开始输入文字了。
末行模式
在命令模式下按":"键进入末行模式
末行模式的常用命令操作
命令 | 退出方式 |
---|---|
:w 文件名 | 以指定的文件名保存,并退出,类似于另存为。 |
:w | 保存当前修改,还可以继续编辑 |
:wq | 保存当前修改,并退出vim环境 |
:q | 退出vim环境(如果当前文件发生修改,将无法保存) |
:q! | 不保存当前修改,并退出vim环境 |
:x | 保存当前修改,并退出vim环境。相当于:wq的意思 |
ZZ | 保存当前修改,并退出vim环境。相当于:wq的意思 |
:set number | 显示行号,简写为:set nu。注意,vi关闭后行号将不再显示 |
:! | 系统命令 执行一个系统命令并显示结果,如在vim下需要执行ls时,可以使用:! ls |
:sh | 切换到命令行 |
查找和替换
命令组成 | 含义 |
---|---|
%s | 确定操作范围,%代表从文本的第一行到最后一行 |
s | 执行替换操作 |
/+/- | 搜索和替换的文本(搜索字母+,替换字母-) |
g | 对搜索到每一行的每一个实例进行替换;如果g缺失,则只替换每一行第一个符合条件的实例。 |
则在每次替换前都会请求用户确认,在屏幕最下方会出现如下内容。
replace with r (y/n/a/q/l/^E/^Y)?
字符 | 含义 |
---|---|
y | 执行替换 |
n | 跳过此次替换 |
a | 执行此次替换以及之后的所有替换 |
q | 停止替换 |
l(小写L) | 执行此次替换以及之后的所有替换 |
^E(Ctrl+E) | ^E表示向下滚动 |
^Y(Ctrl+Y) | ^Y表示向上滚动 |
常用的替换命令:
命令 | 说明 |
---|---|
:s/vivian/sky/ | 替换当前行第一个 vivian 为 sky |
:s/vivian/sky/g | 替换当前行所有 vivian 为 sky |
:%s/vivian/sky/ | 替换每一行的第一个 vivian 为 sky |
:%s/vivian/sky/g | 替换每一行中所有 vivian 为 sky |